浏览器多个Tab都打开了一个网站,如何监听所有网站都关闭了?

window.onunload只能监听一个tab,如何知道该网站的所有tab都关闭了?

阅读 4.1k
2 个回答

可以通过 storage 事件实现。

在网页每次打开的时候,在 localStorage 中累加标记,比如

let num = localStorage.getItem('pageInstanceNum') || 0
num += 1
localStorage.setItem('pageInstanceNum', num)

然后监听页面关闭的事件

window.onbeforeunload = function (e) {
  let num = localStorage.getItem('pageInstanceNum') || 0
  num = num * 1 - 1
  localStorage.setItem('pageInstanceNum', num)
}

最后就是你需要处理其他页面都已经关闭的逻辑了

window.onstorage = function(e) {
  let num = localStorage.getItem('pageInstanceNum') || 0
  if (num <= 1) {
    console.log(`其他页面都已经关闭`)
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题