据我所知,alert(message)会显示一个带有消息的警告框和一个OK按钮,并且它会停止执行警告功能后的代码,直到单击OK按钮。但有一种情况,如果我在一个页面和另一个页面之间切换标签页,警告后的代码会被执行,警告框仍然存在。这是一个bug还是设计的?
我已经测试过Firefox和IE浏览器,没有这个问题,但是Chrome和Edge的工作原理是一样的。顺便说一下,如果开发者工具是开放的,行为会有所不同。
示例如下:
当单击button1并显示警告框时,只需切换到另一个选项卡并再次返回,button2的值将变为“123”,警告框仍在。
<html>
<head>
<script type = "text/javascript">
function fun() {
alert (" Hello World \n This is an alert dialog box ");
document.getElementById("test").setAttribute("value", 123);
}
function fun2() {
document.getElementById("test").setAttribute("value", "Test");
}
</script>
</head>
<body>
<p> Click the following button to see the effect </p>
<form>
<input type = "button" name="button1" value = "Click me" onclick = "fun();" />
<input type = "button" name="button2" id="test" value = "Test" onclick = "fun2()" />
</form>
</body>
</html>
1条答案
按热度按时间2eafrhcq1#
好吧,我不得不说这是设计的,为了不阻碍脚本的执行。这里有一个设计文档供您参考。它说:
但是,如果用户切换到另一个选项卡,将该选项卡移到后台,使其不再位于最前面,我们将关闭该对话框。