如何检测何时清除本地存储

时间:2017-05-02 21:19:21

标签: javascript c# debugging visual-studio-2012 local-storage

我在页面A中添加了本地存储中的一些值。当我转到页面B时,不应该清除本地存储,但它是。这是一个程序错误。但是,我无法正确跟踪它以了解何时发生这种情况。

我尝试使用setInterval每1秒在控制台中登录本地存储的值,当我导航时我丢失了我的值。

我想知道是否有一种方法可以检测或工具来确定我在什么时候清除本地存储,就像调用堆栈一样,而不是跟踪F12开发工具中的断点。我做了一个搜索(CTRL + SHIFT + F)来查找localStorage.clear(),但在我的结果中,我清除LS的地方没有关联,也从未到达。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用storage事件。

  

存储区域(localStorage或。)时会触发存储事件   sessionStorage已被修改。

示例:

window.addEventListener('storage', function(e) {
  //console.log(e.key, e.oldValue,e.newValue, e.url, e.storageArea);
});

重要提示:

  

这不会在正在进行更改的同一页面上工作 - 它确实如此   实际上是一种使用存储同步的域上其他页面的方式   所做的任何改变。

由于只有在同一来源的另一个页面中更改了存储对象时才会触发此事件,我们必须在页面B中添加事件侦听器并更改存储对象在第A页。

由于文档是在堆栈片段中沙箱化的,我们必须使用jsfiddle。

Page B

Page A

如何运行示例:

  1. 打开两页。
  2. 转到第A页并运行小提琴。
  3. 检查B页结果。
  4. 首次运行后,您必须在页面A中使用localStorage.setItem()更改存储密钥的任何值才能再次触发事件。