首页 > 解决方案 > 如果未单击页面,为什么 onbeforeunload 不会触发?

问题描述

我只是想知道为什么会这样?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>close</title>
</head>
<body>
    <h1>onbeforeunload</h1>

<script>
    console.log("loaded");
    window.onbeforeunload = confirmExit;
    function confirmExit(){
        console.log("closed");
        return false;
    }
</script>
</body>
</html>

如果您将此代码复制并保存为 .html 文件并在浏览器中运行它,并且不单击页面内部并关闭选项卡或浏览器,则 onbeforeunload 不会触发!

但是,如果您在页面内单击一次,然后尝试关闭页面,则一切正常。

标签: javascript

解决方案


这是记录在案的行为

注意:为了防止不需要的弹出窗口,一些浏览器不会显示在beforeunload事件处理程序中创建的提示,除非页面已经被交互过;有些根本不显示它们。有关特定浏览器的列表,请参阅Browser_compatibility部分。


推荐阅读