Javascript关闭警告框

IT技术 javascript dialog alert dom-events
2021-02-04 13:07:24

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

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

6个回答

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

看来你可以用Notification API完成一些类似的事情您无法控制它保持可见的时间(可能是某种操作系统首选项——除非您指定 requireInteraction true,否则它会永远保持或直到被关闭或直到您关闭它),并且它需要用户单击“允许”通知”(不幸的是)首先,但这里是:

如果您希望它在 1 秒后关闭(所有操作系统至少将其打开 1 秒):

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

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

参考文献:启发这个答案,但这个问题的答案并不在现代浏览器的工作了,但通知API一样。

requireinteraction 标志也“应该”使其无限期地保持不变(直到他们关闭它或您使用#close 方法) FWIW(在 OS .X 上默认超时为 5s FWIW)
2021-04-02 13:07:24

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

alert()非常适合调试。上次我在 iPad @ office 上编写 userjs 时使用它。上帝保佑警报()!:)
2021-03-21 13:07:24
我发现 alert 和 console.log 在不同情况下都有帮助。永远不要alert();在循环中使用使计算机崩溃的好方法:)
2021-03-28 13:07:24
现在......我承认我仍然时不时地这样做但是......真的吗?调试警报?你是在提倡吗?
2021-04-11 13:07:24

我希望能够在一定时间后或在特定事件(即 onkeypress)上使用 javascript 自动关闭警报框

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

我的警报框会被异步事件触发,所以这应该不是问题(理论上)。
2021-04-04 13:07:24
JavaScript 不是异步的。调用 alert/confirm/prompt 会冻结所有脚本处理(实际上通常是整个 Web 浏览器),直到用户回答。
2021-04-10 13:07:24
@bobince JavaScript 确实允许异步行为;但它不是多线程的如果线程在代码块中冻结 --- 异步与否 --- 所有代码都将在该点冻结。
2021-04-10 13:07:24

尝试启动框插件。

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