我的要求是:如何清除浏览器上的本地存储空间但不刷新?
具有检测浏览器关闭时,它不应该执行的onpage刷新。
如果代码只适用于浏览器关闭,则必须清除localstorage。
我已经尝试过使用onbeforeunload,但它正在浏览器关闭事件和页面刷新事件上执行。
所以我的代码只适用于浏览器关闭事件而不是页面刷新(F5或单击刷新符号)。
我的要求是:如何清除浏览器上的本地存储空间但不刷新?
具有检测浏览器关闭时,它不应该执行的onpage刷新。
如果代码只适用于浏览器关闭,则必须清除localstorage。
我已经尝试过使用onbeforeunload,但它正在浏览器关闭事件和页面刷新事件上执行。
所以我的代码只适用于浏览器关闭事件而不是页面刷新(F5或单击刷新符号)。
您无法分辨浏览器关闭和包含正在刷新的页面的窗口/标签之间的区别。信息根本不可用。
对于您的特定用例,听起来您可能可以使用session storage而不是本地存储。会话存储的点是在用户完成页面时到期。你可以尝试了这一点与this example:
display("Existing <code>sessionStorage.foo</code>: " + sessionStorage.foo);
sessionStorage.foo = new Date().toISOString();
display("New value set: " + sessionStorage.foo);
对我的火狐,Chrome,IE9和(所以大概IE9 +),清爽不明确的会话存储,但关闭标签一样。
或者,您可以在卸载页面时从本地存储中设置时间戳(从onbeforeunload
开始),以及当您将来返回页面时,如果该时间戳足够过时,请清除存储并开始新鲜。当您离开页面时,这并不会清除商店,但是会像一样在间隔后回来时执行此操作。
但会话存储的范围仅限于一个选项卡,因此您不能使用多个选项卡功能。 – 2017-07-14 10:48:27
@PrashantPokhriyal:问题中没有多个选项卡功能。但是它比任何情况下都要复杂得多:如果一个新标签(在同一个源)由一个现有标签打开,它们共享会话存储,因为新标签的浏览上下文不是顶级的浏览上下文(因为它的'开瓶器“是旧选项卡)。因此,在源选项卡中单击'target =“_ blank”'链接或使用'window.open'意味着目标选项卡共享其会话存储。 – 2017-07-14 11:51:31
但是,如果一个新标签(在同一个原产地)** **不是由现有标签打开,那么? – 2017-07-14 13:05:07
当只有浏览器关闭时没有事件被触发。最接近的是当窗口即将卸载其资源时发出的onbeforeunload事件。
是的,但我必须清除localstorage只关闭事件,当我用onbeforeunload,它也执行刷新事件,所以我必须排除刷新事件..需要和需要,, PLZ找到解决方案 – user3523448 2014-08-31 07:37:56
看一看在会议存储区https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage – 2014-08-31 07:45:21
可能重复http://stackoverflow.com/questions/1631959/browser-window-close-event – 2014-08-31 07:22:51
@Moogs:存储方面*可能会使这个不同。 – 2014-08-31 07:28:22
如果你实际上不会坚持任何事情,为什么还要使用本地存储? – jmort253 2014-08-31 07:35:40