首页 >web前端 >js教程 >如何在 JavaScript 中可靠地检测浏览器窗口关闭?

如何在 JavaScript 中可靠地检测浏览器窗口关闭?

Patricia Arquette
Patricia Arquette原创
2024-11-27 16:23:10972浏览

How Can I Reliably Detect Browser Window Closure in JavaScript?

JavaScript:通过 window.close 事件检测窗口关闭

问题:

捕获 window.close 事件是必要的用于检测用户何时关闭浏览器窗口或离开特定的页。

解决方案:

此解决方案的实现因浏览器兼容性而异。

2024 年更新:

  • 信标API: 即使用户退出页面也会完成的 POST 请求。非常适合发送会话数据、分析等。
  • Visibilitychange 事件: 当文档转换为“隐藏”状态(页面关闭或导航离开)时触发的最后一个可靠事件。

详细信息:

信标API

var url = "https://example.com/foo";
var data = "bar";

navigator.sendBeacon(url, data);

Visibilitychange 事件

document.addEventListener('visibilitychange', function() {
  if (document.visibilityState === "hidden") {
    // Send Beacon request or perform other actions
  }
});

跨浏览器支持:

如果需要支持旧版浏览器,生命周期.js 库可以是使用:

lifecycle.addEventListener('statechange', function(event) {
  if (event.originalEvent == 'visibilitychange' && event.newState == 'hidden') {
    // Send Beacon request or perform other actions
  }
});

限制:

  • 广告拦截器可能会干扰 sendBeacon 请求,特别是跨源请求。
  • 跨站点请求受到 CORS 限制。

以上是如何在 JavaScript 中可靠地检测浏览器窗口关闭?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn