gpt4 book ai didi

Javascript:onbeforeunload何时触发?

转载 作者:行者123 更新时间:2023-12-03 00:04:00 25 4
gpt4 key购买 nike

我正在向我的网站添加“确认您要离开”对话框,但遇到了 onbeforeunload 事件的奇怪行为。

docs非常清楚:如果您的页面即将被卸载,则会调用此事件。当您的 eventHandler 返回一个字符串时,系统会要求用户确认。根据浏览器的不同,该字符串可能会显示给他。

但在一个小型示例网站中,我注意到只有当用户以某种方式与网站交互时才会真正触发 beforeunload 。这是我的测试设置:

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="utf-8" />
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js">
</script>
<script type="text/javascript">
window.onload = function () {
$("#placeholder").text("website loaded")
window.onbeforeunload = function () {
return "Reloading the page will reset the survey!";
}
}
</script>
</head>

<body>
<p id='placeholder'></p>
</body>

</html>

加载窗口时,段落文本会更改,并且会注册 beforeunload 的事件处理程序。如果我在 Firefox 中加载此内容,该段落会立即更改。

但是如果我关闭选项卡或重新加载它,则不会要求确认。仅当我单击网站时才会显示确认对话框。来回切换选项卡是不够的,等待大约 10 秒也是不够的。

Chrome 中的行为相同。

一旦我点击网站,总是会要求确认。我可以聚焦另一个选项卡并关闭此示例(通过右键单击和“关闭选项卡”),它要求确认。或者另一个选项卡已聚焦,我尝试关闭浏览器,它要求确认。

这里发生了什么,我如何确保该事件始终在网站卸载之前触发?

这是一个视频: enter image description here

最佳答案

事件会触发,但可能不会显示确认信息。来自MDN :

Note: To combat unwanted pop-ups, browsers may not display prompts created in beforeunload event handlers unless the page has been interacted with, or may even not display them at all.

关于Javascript:onbeforeunload何时触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55048301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com