【问题标题】:javascript to check when the browser window is closedjavascript 检查浏览器窗口何时关闭
【发布时间】:2010-10-22 18:31:09
【问题描述】:

有谁知道我可以使用javascript检查浏览器窗口何时关闭并弹出一个确认对话框询问用户是否确认退出浏览器或改变主意留下?

【问题讨论】:

标签: javascript


【解决方案1】:

文档here 鼓励收听onbeforeunload 事件 和/或在window 上添加事件侦听器。

window.addEventListener('beforeunload', function(e) {}, false);

您也可以使用函数函数引用填充window.onunload.onbeforeunload属性。

虽然跨浏览器的行为没有标准化,但函数可能会返回一个值,浏览器在确认是否离开页面时将显示该值。

【讨论】:

    【解决方案2】:

    这也有效,除非 IE8

    $(window).bind('beforeunload', function (e) {
            // code to execute when browser is closed
            e.$.post("func.php", { action: 'action', id_userMsg: '<?php echo $id_user; ?>' });      
    
        });
    

    【讨论】:

      【解决方案3】:

      这对我有用:

      function closeWin(){
       var exit = confirm("Do you want to leave this window?");  
           if(exit==true){
              //do something before closing;
           }
      }    
      
      body onbeforeunload="closeWin()" 
      

      【讨论】:

        【解决方案4】:
        window.onbeforeunload = function (e) {
          var e = e || window.event;
        
          //IE & Firefox
          if (e) {
            e.returnValue = 'Are you sure?';
          }
        
          // For Safari
          return 'Are you sure?';
        };
        

        https://developer.mozilla.org/en/DOM/window.onbeforeunload

        【讨论】:

        • 那应该是'return confirm("Are you sure? ...");'。
        • @Anon nope,confirm() 返回一个布尔值,您的 onbeforeunload 处理程序需要返回一个字符串。
        • 嗯,这是一种特殊的行为。显示我使用它的频率!
        • 我对此投了反对票,因为如果您尝试转到页面上的另一个链接,您会看到“您确定吗?”
        • 就 DOM 而言,离开页面和关闭浏览器窗口没有区别。 @ElHaix
        【解决方案5】:

        如果页面关闭后浏览器仍在运行,并且浏览器处理了 body 元素的“onbeforeunload”事件(有时它被禁用),并且如果浏览器允许弹出窗口或消息框,并且能够从该事件返回 false 以防止页面更改,那么这是可能的。

        例如,在任何启用了 Javascript 的 * 页面上开始输入评论,然后离开该页面。

        【讨论】: