关闭所有选项卡时删除/清除本地存储[重复]
Posted
技术标签:
【中文标题】关闭所有选项卡时删除/清除本地存储[重复]【英文标题】:Remove/Clear local storage when all tabs are closed [duplicate] 【发布时间】:2014-07-08 16:48:58 【问题描述】:当我的网站从所有选项卡中关闭或通过单击关闭按钮或任何快捷键关闭浏览器窗口时,我必须清除本地存储,自 2-3 天以来我有谷歌,但没有取得任何成功。你有什么方法可以实现吗?
【问题讨论】:
在“卸载”事件期间清除存储。 【参考方案1】:window.localStorage.removeItem(key);
【讨论】:
没有解释的代码没有帮助。在这里您必须至少解释在什么情况下应该调用此代码。此外,您拥有的代码实际上并没有清除存储:它只从存储中删除一个密钥。在您开始编辑之前,我会补充一点,如果您以这样一种方式编辑它,它提供了一个已经提出的解决方案,您应该删除它。不欢迎重复的解决方案。【参考方案2】:你可以使用 sessionStorage :如果您想在另一个选项卡中处理。 localStorage : 仅在当前选项卡中。
window.onbeforeunload = function()
window.localStorage.clear();
window.sessionStorage.clear();
希望对你有所帮助。
【讨论】:
清除 unload 事件中的 sessionStorage 会破坏功能,因为正常刷新也会触发此事件。 会和onbeforeunload事件一样吗?感谢您提供有关“卸载”中断的信息。非常有用。【参考方案3】:你必须使用鲜为人知的小弟弟sessionStorage
,而不是localStorage
。它完全符合您的要求 - 将数据存储到会话结束。
Check out this example。重新加载几次以查看计数器增量。关闭窗口后,计数器将被重置。
【讨论】:
【参考方案4】:您可以使用body
标签中的onunload
事件来触发本地存储清除:
<body onunload = "javascript:window.localStorage.clear()">
有一个警告,不过,onunload
事件在 IE、Firefox 和 Safari 中受支持,但在 Chrome 或 Opera 中不正确支持。
【讨论】:
你从哪里得到的信息,chrome 不支持unload
事件?
仔细阅读——“正确”,表示旧版Chrome有问题,***.com/questions/12182559/…,还有webkit.org/blog/516/webkit-page-cache-ii-the-unload-event
hi @bodi0 和 christoph,但是如果用户按 ctrl+f5 或刷新按钮,我希望本地存储保持不变,如果 2 个标签打开了我的网站,有些只关闭了一个标签,那么也是本地的存储仍然存在,当从浏览器关闭所有选项卡时,只有我需要删除本地存储。
您必须将其与交叉表消息传递相结合:***.com/a/1100416/1816580
@ArtjomB。不需要复杂的消息传递,sessionStorage 就可以了。以上是关于关闭所有选项卡时删除/清除本地存储[重复]的主要内容,如果未能解决你的问题,请参考以下文章