我的要求是:
必须检测浏览器关闭事件,并且不应执行页面刷新。
如果代码仅在浏览器关闭时有效,则必须清除本地存储。
我已经尝试过 onbeforeunload 但它是在浏览器关闭事件和页面刷新事件上执行的。
所以我的代码仅适用于浏览器关闭事件,不适用于页面刷新(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/