Javascript关闭警报框
Posted
技术标签:
【中文标题】Javascript关闭警报框【英文标题】:Javascript close alert box 【发布时间】:2010-10-02 13:53:05 【问题描述】:我希望能够在一定时间后或在特定事件(即onkeypress
)后使用 javascript 自动关闭警报框。根据我的研究,使用内置 alert()
函数似乎不可能。有没有办法覆盖它并控制它打开的对话框?
另外,我不希望将隐藏的 div 显示为警报的覆盖。我需要一个实际的对话框。
【问题讨论】:
【参考方案1】:如前所述,您确实不能这样做。您可以使用 UI 框架在窗口内执行模式对话框,或者您可以有一个弹出窗口,其中包含一个在超时后自动关闭的脚本......每个都有负面的方面。如果窗口被最小化,浏览器内的模态窗口将不会创建任何通知,并且现代浏览器和弹出窗口阻止程序可能会阻止程序化(基于计时器)弹出窗口。
【讨论】:
【参考方案2】:看来您可以使用Notification API 完成一些类似的事情。您无法控制它保持可见的时间(可能是某种操作系统偏好——除非您指定 requireInteraction 为真,否则它会永远保持或直到关闭或关闭它),并且它要求用户单击“允许通知”(不幸的是)首先,但这里是:
如果您希望它在 1 秒后关闭(所有操作系统至少让它打开 1 秒):
var notification = new Notification("Hi there!", body: "some text");
setTimeout(function() notification.close(), 1000);
如果你想显示比“默认”更长的时间,你可以绑定到 onclose 回调并显示另一个我想的重复通知来替换它。
参考:受this 答案的启发,虽然该答案在现代 Chrome 中不再适用,但 Notification API 可以。
【讨论】:
requireinteraction 标志也是“假定的”以使其无限期保持(直到他们关闭它或您使用#close 方法)FWIW(在 OS .X 上默认超时为 5 秒 FWIW)跨度> 【参考方案3】:无法控制对话框,如果您可以控制对话框,则可以编写突兀的 javascript 代码。 (除了调试以外的任何事情都使用 alert 不是一个好主意)
【讨论】:
现在...我承认我仍然不时这样做,但是...真的吗?调试警报?你提倡那个?alert()
非常适合调试。上次我在 iPad @ office 上编写 userjs 时使用它。上帝保佑警报()! :)
我发现 alert 和 console.log 在不同情况下都有帮助。千万不要在循环中使用alert();
。让电脑崩溃的好方法:)【参考方案4】:
我希望能够关闭警报 使用javascript自动框 一段时间后或 特定事件(即 onkeypress)
旁注:如果您有警报(“数据”),您将无法让代码在后台运行(AFAIK)...。对话框是一个模态窗口,所以你也不能失去焦点。所以你不会有任何按键或计时器运行......
【讨论】:
我的警报框会被异步事件触发,所以这应该不是问题(理论上)。 JavaScript 不是异步的。调用 alert/confirm/prompt 会冻结所有脚本处理(实际上通常是整个 Web 浏览器),直到用户回答为止。 @bobince JavaScript 确实允许 异步 行为;但它不是多线程。如果线程冻结在一个代码块中——异步与否——所有代码都将在该点冻结。【参考方案5】:试试启动盒插件。
var alert = bootbox.alert('Massage')
alert.show();
setTimeout(function()alert.modal('hide'); , 4000);
【讨论】:
【参考方案6】:我猜你可以打开一个弹出窗口并调用 that 一个对话框。我不确定细节,但我很确定您可以通过编程方式关闭您从 javascript 打开的窗口。这样就够了吗?
【讨论】:
很好的解决方法,但 OP 只需要警报对话框。但这应该适用于那些想要控制对话的人。 +1【参考方案7】:这里唯一真正的选择是使用某种带有模态选项的自定义小部件。查看 jQuery UI 以获得具有这些功能的对话框示例。几乎每个你能提到的 JS 框架中都存在类似的东西。
【讨论】:
我知道,但不幸的是,它确实是在 JavaScript 中处理这些东西的唯一方法。 不用生气,你问了一个问题,我说做不到,做不到,提供了替代方案。 哇...多年后,我无法相信我是多么的白痴。抱歉,当您只想提供帮助时,我真是个笨蛋。【参考方案8】:如果您在 JS 中以编程方式执行此操作,那就像重新发明***一样。我建议使用名为 jGrowl 的 jQuery 插件
【讨论】:
jGrowl 只显示一个内联 div。我需要一个对话框。不过还是谢谢。【参考方案9】:你实际上可以做到这一点,你基本上可以监听这个弹出窗口的发生,然后在它“弹出”之前确认它是真的,
if(window.alert)
return true
【讨论】:
【参考方案10】:您可以使用标签并设置其淡入和淡出时间,例如 最初隐藏它并在点击时显示。 $('#div_Message').fadeIn(500).delay(1000).fadeOut(1500);
【讨论】:
【参考方案11】:window.setTimeout('alert("Message goes here");window.close();', 5000);
【讨论】:
以上是关于Javascript关闭警报框的主要内容,如果未能解决你的问题,请参考以下文章