如何在浏览器关闭但不刷新的情况下清除本地存储?

时间:2014-08-31 07:18:57

标签: javascript html angularjs

我的要求是:

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

  2. 如果代码仅适用于浏览器关闭,则必须清除localstorage。

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

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

2 个答案:

答案 0 :(得分:6)

您无法区分正在关闭的浏览器与包含正在刷新的页面的窗口/选项卡之间的区别。信息根本无法获得。

对于您的特定用例,听起来您可以使用session storage而不是本地存储。会话存储的 point 是当用户完成页面时它会过期。您可以使用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 +),刷新并不清除会话存储,但关闭选项卡会。

或者,您可以在卸载页面时从本地存储设置时间戳(来自onbeforeunload),并且当您将来返回页面时,如果该时间戳已经过时,则清除存储并重新开始。当你离开页面时,这并不能清除商店,但行动就好像你在一段时间后回来时一样。

答案 1 :(得分:0)

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