繁体   English   中英

如何清除浏览器上的本地存储关闭但不刷新?

[英]How to clear local storage on browser close but not refresh?

我的要求是:

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

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

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

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

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

对于您的特定用例,听起来您可能可以使用会话存储而不是本地存储。 会话存储的要点是,当用户完成页面处理后,会话存储将过期。 您可以通过以下示例进行尝试:

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

对我来说,在Firefox,Chrome和IE9(大概是IE9 +)上,刷新不会清除会话存储,但是关闭选项卡却可以。

或者,可以在卸载页面时(从onbeforeunload )在本地存储中设置时间戳,而当将来返回页面时,如果该时间戳足够过时,请清除存储并重新开始。 这不清除店当你离开的页面,但不会表现得好像它没有当你来到一个时间间隔后回来。

关闭浏览器时,不会触发任何事件。 最接近的是onbeforeunload事件,该事件将在窗口即将卸载其资源时发出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM