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

Max*_*mus 3 javascript c# debugging local-storage visual-studio-2012

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

我尝试执行 setInterval 来每 1 秒在控制台中记录一次本地存储的值,但当我导航出去时,我会丢失我的值。

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

Ric*_*cky 7

您可以尝试使用该storage事件。

\n\n
\n

当存储区域(localStorage 或\n sessionStorage)被修改时,将触发存储事件。

\n
\n\n

例子:

\n\n
window.addEventListener(\'storage\', function(e) {\n  //console.log(e.key, e.oldValue,e.newValue, e.url, e.storageArea);\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

重要的:

\n\n
\n

这在进行更改的同一页面上不起作用\xe2\x80\x94,这实际上是域上其他页面使用存储同步所做的任何更改的一种方式。

\n
\n\n

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

\n\n

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

\n\n

B页

\n\n

A页

\n\n
\n\n

如何运行示例:

\n\n
    \n
  1. 打开两个页面。
  2. \n
  3. 转到页面 A 并运行 fiddle。
  4. \n
  5. 检查B页结果。
  6. \n
\n\n
\n\n

第一次运行后,您必须使用以下命令更改存储键的任何值localStorage.setItem()页面 A 中存储键的任何值才能再次触发该事件。

\n