javascript - 如何在浏览器关闭但不刷新时清除本地存储?

标签 javascript html angularjs

我的要求是:

  1. 必须检测浏览器关闭事件,并且不应执行页面刷新。

  2. 如果代码仅在浏览器关闭时有效,则必须清除本地存储。

  3. 我已经尝试过 onbeforeunload 但它是在浏览器关闭事件和页面刷新事件上执行的。

  4. 所以我的代码仅适用于浏览器关闭事件,不适用于页面刷新(F5 或单击刷新符号)。

最佳答案

您无法区分浏览器关闭和包含页面刷新的窗口/选项卡之间的区别。这些信息根本不可用。

对于您的特定用例,听起来您可以使用 session storage而不是本地存储。 session 存储的要点是,当用户使用完页面后, session 存储就会过期。您可以尝试使用this example :

display("Existing <code>sessionStorage.foo</code>: " + sessionStorage.foo);
sessionStorage.foo = new Date().toISOString();
display("New value set: " + sessionStorage.foo);

对于我使用 Firefox、Chrome 和 IE9(因此大概是 IE9+)而言,刷新不会清除 session 存储,但关闭选项卡会清除 session 存储。

或者,您可以在卸载页面时(从 onbeforeunload)以及将来返回该页面时在本地存储中设置时间戳(如果该时间戳足够超出)日期,清除存储并重新开始。当您离开页面时,这不会清除存储,但表现就像您在一段时间后返回时一样。

关于javascript - 如何在浏览器关闭但不刷新时清除本地存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25589804/

相关文章:

javascript - 动画滚动 Flex div 从左到右

javascript - JS Lodash : Sort object by value, 最后为空

javascript - Angular UI Bootstrap Slider 每张幻灯片多个项目

javascript - 为什么 jquery 选择器返回一个数组而不是元素本身?

PHP 显示为 HTML

javascript - 在各个 HTML 表格行中添加来自 HTML 输入文件的文件

javascript - 如何实时更新 localStorage.length() 上的数据

JavaScript 无法在 IE7 和 8 上正常运行

angularjs - 在 AngularJS 中动态加载 HTML 元素

javascript - 如何使用多个链接过滤 AngularJS 中的列表