代码之家  ›  专栏  ›  技术社区  ›  lewis4u

如果没有单击页面,为什么onbeforeunload不会启动?

  •  0
  • lewis4u  · 技术社区  · 6 年前

    我只想知道为什么?

    <!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!

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

    2 回复  |  直到 6 年前
        1
  •  1
  •   Sergio Tulentsev    6 年前

    这是 documented behaviour 以下内容:

    注意 :为了防止出现不需要的弹出窗口,有些浏览器不显示在 beforeunload 事件处理程序,除非页面已与之交互;有些根本不显示它们。有关特定浏览器的列表,请参见 Browser_compatibility 章节。

        2
  •  0
  •   Mr. Roshan    6 年前

    试试这个:

    $(document).ready(function() { 
        console.log("loaded");
        window.onbeforeunload = confirmExit;
        function confirmExit(){
            console.log("closed");
            return true;
        }
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <h1>onbeforeunload</h1>