首页 > 解决方案 > 如何检测使用 javascript 关闭整个浏览器?

问题描述

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

标签: javascript

解决方案


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

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

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

现在“会话结束”是什么意思?这个答案是……答案:

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

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

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

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

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


推荐阅读