Javascript关闭警报框

时间:2009-01-20 22:18:46

标签: javascript javascript-events dialog alert

我希望能够在一定时间后或在特定事件(即onkeypress)上使用javascript自动关闭警报框。根据我的研究,内置的alert()函数看起来不太可能。有没有办法覆盖它并控制它打开的对话框?

另外,我不希望覆盖显示隐藏的div作为警报。我需要一个实际的对话框。

11 个答案:

答案 0 :(得分:18)

如前所述,你真的不能这样做。您可以使用UI框架在窗口内部执行模式对话框,或者您可以使用弹出窗口,其中脚本在超时后自动关闭...每个都有负面的方面。如果窗口最小化,浏览器内的模态窗口将不会创建任何通知,并且现代浏览器和弹出窗口阻止程序可能会阻止程序化(基于计时器)弹出窗口。

答案 1 :(得分:6)

看起来您可以通过Notification API获得类似的功能。您无法控制它可见的时间长度(可能是某种操作系统偏好 - 除非您指定requireInteraction为true),并且它要求用户单击"允许通知" (不幸的是),但现在是:

如果你希望它在1s后关闭:

var notification = new Notification("Hi there!", {body: "some text"});
setTimeout(function() {notification.close()}, 1000);

如果你想显示的时间长于"默认"您可以绑定到onclose回调并显示我想要的另一个重复通知,以替换它。

参考:受到this答案的启发,虽然这个答案在现代Chrome中不再起作用,但Notification API会这样做。

答案 2 :(得分:5)

无法控制对话框,如果您可以控制对话框,则可以编写突出的javascript代码。 (对于除调试之外的任何事情,使用警报不是一个好主意)

答案 3 :(得分:3)

  

我希望能够关闭提醒   框自动​​使用javascript   经过一段时间或在一段时间后   特定事件(即onkeypress)

旁注:如果您有警报(“数据”),您将无法使代码在后台运行(AFAIK)....对话框是一个模态窗口,因此您也不能失去焦点。所以你不会有任何按键或计时器运行...

答案 4 :(得分:2)

尝试启动框插件。

var alert = bootbox.alert('Massage')
alert.show();
setTimeout(function(){alert.modal('hide'); }, 4000);

答案 5 :(得分:1)

我猜你可以打开一个弹出窗口并调用那个一个对话框。我不确定细节,但我很确定你可以通过编程方式关闭一个从javascript打开的窗口。这样就够了吗?

答案 6 :(得分:1)

这里唯一真正的替代方案是使用某种带有模态选项的自定义小部件。查看jQuery UI以获取具有这些功能的对话框示例。几乎所有可以提及的JS框架都存在类似的事情。

答案 7 :(得分:0)

您实际上可以执行此操作,基本上可以侦听此弹出窗口的发生,然后在它“弹出”之前确认为真,

if(window.alert){
  return true
}

答案 8 :(得分:-1)

如果你在JS中以编程方式执行它就像重新发明轮子一样。我建议使用名为jQuery

jGrowl插件

答案 9 :(得分:-3)

您可以使用标签并设置其淡入和淡出时间,例如 最初隐藏它并在点击时显示。 $('#div_Message&#39)。淡入(500).delay(1000).fadeOut(1500);

答案 10 :(得分:-5)

window.setTimeout('alert("Message goes here");window.close();', 5000);
相关问题