javascript 检查浏览器窗口何时关闭

Posted

技术标签:

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

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

【问题讨论】:

浏览器窗口是指页面窗口还是整个浏览器? Browser window close event 的可能重复项 【参考方案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 的 *** 页面上开始输入评论,然后离开该页面。

【讨论】:

以上是关于javascript 检查浏览器窗口何时关闭的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 JavaScript 中检测 Android 和 iOS 浏览器何时关闭屏幕

Pyqt检查其他窗口何时关闭

检测何时使用 JavaScript 调整窗口大小?

Perl-我如何知道套接字客户端何时断开连接(当用户关闭窗口/浏览器时)

HTML / Javascript检查窗口关闭并执行功能[重复]

javascript 检查打开的窗口是否关闭