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

IT技术 javascript
2021-01-14 16:44:49

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

5个回答
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

就 DOM 而言,离开页面和关闭浏览器窗口之间没有区别。@ElHaix
2021-03-17 16:44:49
那应该是'return confirm("Are you sure? ...");'。
2021-03-22 16:44:49
@Anon 不,confirm() 返回一个布尔值,您的 onbeforeunload 处理程序需要返回一个字符串。
2021-03-26 16:44:49
嗯,这是一种奇特的行为。去显示我使用它的频率!
2021-03-29 16:44:49
我对此投反对票,因为如果您尝试转到页面上的另一个链接,您会看到“您确定吗?”
2021-04-11 16:44:49

此处的文档鼓励侦听onbeforeunload 事件和/或在 上添加事件侦听器window

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

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

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

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

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

这对我有用:

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

body onbeforeunload="closeWin()" 

这也有效,除非适用于 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; ?>' });      

    });