【问题标题】:How can I detect closing whole browser using javascript?如何检测使用 javascript 关闭整个浏览器?
【发布时间】:2021-10-29 18:47:12
【问题描述】:

当听到特定事件时,我需要制作一个 cookie。 (点击示例)
并在用户关闭浏览器时删除 cookie。如果用户只关闭选项卡,则不应删除 cookie。
我试过beforeunloadunload 在标签关闭后检查窗口大小。
但它没有用。我认为这些事件没有任何关于窗口大小的属性。
有什么方法可以检测到“浏览器关闭”?

【问题讨论】:

  • 我不这么认为,就您的网站而言,区别是无关紧要的。无论如何,它甚至都不可靠。如果您强制退出浏览器或它崩溃,该事件也不会触发。想一些其他方法来实现您想要实现的任何目标,而不依赖于检测浏览器关闭。
  • 为什么不保存onloadonchange窗口的大小?您将始终拥有更新的数据。
  • deceze // 谢谢,我想不出无法检测到的事件。现在我需要找到新的方式
  • Simone // 我想即使保存也无法使用尺寸值。我无法从unloadbeforeunloadevent 获得大小值。他们是undefined。所以我无法比较使用它

标签: javascript


【解决方案1】:

这不是对标题中问题的回答,但可能以最可靠的方式解决了手头的问题(在浏览器关闭时删除 cookie)。

使用会话 cookie!
它们在最后一个浏览器窗口关闭时被删除。来自MDN on document.cookie

如果既没有过期也没有指定 max-age,它将在会话结束时过期。

现在“会话结束”是什么意思? This answer 持有……答案:

cookie 将在会话结束时过期(即,当您关闭浏览器时)

5 年前this answer 之后的浏览器之间似乎存在一些差异,但我不确定目前的状态。根据您的用例,这仍然可能就足够了。

由于@decezecomment 中提出的问题,通过 JS 事件检测浏览器关闭将非常不可靠:

如果你强制退出浏览器或它崩溃,事件也不会触发

除此之外,我不认为(尽管我没有任何文档的证据)存在相应的 DOM 事件会发生。

【讨论】:

  • 感谢您的回答。我需要检查一下max-ageexpires
猜你喜欢
  • 1970-01-01
  • 2014-02-21
  • 1970-01-01
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多