onkeypress
)后自动关闭警报框。 通过我的研究,似乎使用内置的alert()
函数无法实现这一点。 是否有办法覆盖它并控制它打开的对话框?另外,我不希望覆盖显示隐藏的
onkeypress
)后自动关闭警报框。 通过我的研究,似乎使用内置的alert()
函数无法实现这一点。 是否有办法覆盖它并控制它打开的对话框?如先前所述,你无法做到这一点。你可以使用UI框架在窗口内创建模态对话框,或者你可以使用一个弹出式窗口,在超时后自动关闭脚本...每种方法都有负面影响。浏览器内的模态窗口如果被最小化,将不会创建任何通知,并且基于编程(定时器)的弹出窗口很可能会被现代浏览器和弹出式阻止程序阻挡。
看起来你可以使用 Notification API 实现类似的功能。你无法控制它停留的时间(可能是某种操作系统偏好,除非你指定 requireInteraction 为 true,那么它会一直保持显示直到被关闭或直到你关闭它),并且需要用户首先点击“允许通知”(不幸的是),但是这就是方法:
如果你想让它在1秒后关闭(所有的操作系统至少会将其保持打开1秒):
var notification = new Notification("Hi there!", {body: "some text"});
setTimeout(function() {notification.close()}, 1000);
如果您想要显示比“默认”更长的时间,我想您可以绑定到onclose回调并显示另一个重复的通知来替换它。
参考:这个答案所启发,尽管该答案在现代Chrome中不再起作用,但通知API确实起作用。
如果您对对话框没有控制权,那么您将无法编写侵入式的JavaScript代码。 (除了调试之外,使用警报(alert)来执行任何操作都不是一个好主意)
alert();
,否则会导致计算机崩溃。 :) - www139我想使用javascript在特定时间或事件(例如onkeypress)后自动关闭警告框。
顺便说一句:如果您有一个Alert("data"),您将无法在后台保持代码运行(据我所知)......对话框是模态窗口,因此您不能失去焦点。因此,您将无法运行任何按键或计时器......
尝试使用boot box插件。
var alert = bootbox.alert('Massage')
alert.show();
setTimeout(function(){alert.modal('hide'); }, 4000);
我猜你可以打开一个弹出窗口,并将其称为对话框。虽然我不确定细节,但我相当确信你可以从JavaScript中程序化地关闭你打开的窗口。这个方案可行吗?
<!DOCTYPE html>
<html>
<body>
<h1>The HTML Dialog Object</h1>
<dialog id="myDialog">This is a dialog window</dialog>
<h2>The Dialog will open 3 seconds after window load and close, 5 seconds after first showing, on it's own</h2>
<script>
function showDialog(dialog) {
dialog.show();
closeDialog(dialog);
}
function closeDialog(dialog) {
setTimeout(function () {
dialog.close();
}, 5000);
}
function init() {
setTimeout(function () {
const dialog = document.getElementById("myDialog");
showDialog(dialog);
}, 3000);
}
init();
</script>
</body>
</html>
你实际上可以做到这一点,你可以基本上监听这个弹出窗口的发生,然后在它“弹出”之前确认为真。
if(window.alert){
return true
}