javascript - 如何检测使用 javascript 关闭整个浏览器?
问题描述
当听到特定事件时,我需要制作一个 cookie。(例如单击)
并在用户关闭浏览器时删除 cookie。如果用户仅关闭选项卡,则不应删除 cookie。
我试过beforeunload
并unload
在标签关闭后检查窗口大小。
但它没有用。我认为这些事件没有关于窗口大小的任何属性。
有什么方法可以检测“浏览器关闭”?
解决方案
这不是标题中问题的答案,但可能以最可靠的方式解决了手头的问题(在浏览器关闭时删除 cookie)。
使用会话 cookie!
它们在最后一个浏览器窗口关闭时被删除。来自MDN on document.cookie:
如果既没有 expires 也没有指定 max-age ,它将在会话结束时过期。
现在“会话结束”是什么意思?这个答案是……答案:
cookie 将在会话结束时过期(即,当您关闭浏览器时)
5年前,在这个答案之后,浏览器之间似乎存在一些差异,但我不确定目前的状态。根据您的用例,这仍然可能就足够了。
由于@deceze的评论中提出的问题,通过 JS 事件检测浏览器关闭将非常不可靠:
如果您强制退出浏览器或它崩溃,该事件也不会触发
除此之外,我不认为(尽管我没有任何文档的证据)有相应的 DOM 事件会发生。
推荐阅读
- c++ - 不引用所有 Gtk::Builder 变量是否明智,因为 Gtk::Application 已经被引用
- c# - 在 Mac 上从 .NET Core 运行进程
- python - 日期时间模块中的 %b vs %B (python 3)
- typescript - 尝试从选择器选项访问日期数组时为空
- reactjs - 高图。如何从开始 y 轴开始区域样条图?
- r - 根据R中的分层条件添加带有字母的列
- java - 无法定位元素:通过 POM 执行代码时出错,通过单个 main() 程序执行时相同的定位器工作正常
- 3d - 3d 形状填充连接到 P5.js webGL 上的第一个顶点
- angular - 使用 Angular 7 http 拦截器加载微调器在页面重新加载时不起作用
- ag-grid - AG-GRID 值格式化程序不适用于动态生成的货币