我希望能够在一定时间后或在特定事件(即onkeypress
)上使用 Javascript 自动关闭警报框。根据我的研究,内置alert()
函数看起来不可能。有没有办法覆盖它并控制它打开的对话框?
另外,我不想要一个将隐藏的 div 显示为警报的覆盖。我需要一个实际的对话框。
我希望能够在一定时间后或在特定事件(即onkeypress
)上使用 Javascript 自动关闭警报框。根据我的研究,内置alert()
函数看起来不可能。有没有办法覆盖它并控制它打开的对话框?
另外,我不想要一个将隐藏的 div 显示为警报的覆盖。我需要一个实际的对话框。
如前所述,你真的不能这样做。您可以使用 UI 框架在窗口内创建一个模态对话框,或者您可以创建一个弹出窗口,其中包含一个在超时后自动关闭的脚本……每个都有一个消极方面。如果窗口最小化,浏览器内的模态窗口将不会创建任何通知,并且程序化(基于计时器)弹出窗口可能会被现代浏览器和弹出窗口阻止程序阻止。
看来你可以用Notification API完成一些类似的事情。您无法控制它保持可见的时间(可能是某种操作系统首选项——除非您指定 requireInteraction true,否则它会永远保持或直到被关闭或直到您关闭它),并且它需要用户单击“允许”通知”(不幸的是)首先,但这里是:
如果您希望它在 1 秒后关闭(所有操作系统至少将其打开 1 秒):
var notification = new Notification("Hi there!", {body: "some text"});
setTimeout(function() {notification.close()}, 1000);
如果您想显示比“默认”更长的时间,您可以绑定到 onclose 回调并显示另一个重复通知,我想,以替换它。
参考文献:启发这个答案,但这个问题的答案并不在现代浏览器的工作了,但通知API一样。
无法控制对话框,如果您可以控制对话框,则可以编写引人注目的 javascript 代码。(除了调试之外,将警报用于任何事情都不是一个好主意)
我希望能够在一定时间后或在特定事件(即 onkeypress)上使用 javascript 自动关闭警报框
旁注:如果您有警报(“数据”),您将无法保持代码在后台运行(AFAIK)...。该对话框是一个模态窗口,因此您也不会失去焦点。所以你不会有任何按键或计时器运行......
尝试启动框插件。
var alert = bootbox.alert('Massage')
alert.show();
setTimeout(function(){alert.modal('hide'); }, 4000);