如果未单击页面,为什么 onbeforeunload 不会触发?

lew*_*s4u 1 javascript

我只是想了解这是为什么?

<!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>
Run Code Online (Sandbox Code Playgroud)

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

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

Ser*_*sev 5

这是有记录的行为

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