我在页面 A 中添加了本地存储中的一些值。当我转到页面 B 时,本地存储不应被清除,但确实如此。这是一个程序错误。但是,我无法正确跟踪它以了解这种情况何时发生。
我尝试执行 setInterval 来每 1 秒在控制台中记录一次本地存储的值,但当我导航出去时,我会丢失我的值。
我想知道是否有一种方法或工具可以确定在什么时候我像调用堆栈一样清除本地存储,而不是在 F12 开发工具中跟踪断点。我进行了搜索(CTRL + SHIFT + F)来查找localStorage.clear()
但在我的结果中,我清除 LS 的地方不相关且从未到达。
您可以尝试使用storage https://developer.mozilla.org/en-US/docs/Web/Events/storage event.
当存储区域(localStorage 或
sessionStorage)已被修改。
Example:
window.addEventListener('storage', function(e) {
//console.log(e.key, e.oldValue,e.newValue, e.url, e.storageArea);
});
重要的:
这在进行更改的同一页面上不起作用 - 它是
这确实是域中其他页面使用存储进行同步的一种方式
所做的任何更改。
Since 仅当同一源内的另一个页面中的存储对象发生更改时才会触发此事件,我们必须在页面 B 中添加事件侦听器并更改页面 A 中的存储对象。
由于文档是在堆栈片段中沙箱化的,因此我们必须使用 jsfiddle。
Page B https://jsfiddle.net/rickyruizm/27u1d2ry/
Page A https://jsfiddle.net/rickyruizm/a247pa6y/
如何运行示例:
- 打开两个页面。
- 转到页面 A 并运行 fiddle。
- 检查B页结果。
第一次运行后,您必须使用以下命令更改存储键的任何值localStorage.setItem()
在页面 A 中再次触发该事件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)