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

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

本文关键字:刷新 清除 存储 浏览器      更新时间:2023-09-26

我的要求是:

  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事件,该事件在窗口即将卸载其资源时发出。