【问题标题】:Finding out what's writing to localstorage?找出写入本地存储的内容?
【发布时间】:2022-11-04 22:40:47
【问题描述】:

我正在调查一个无限循环,我相信某些东西正在写入本地存储并触发“存储”事件侦听器。我如何知道具体写入本地存储的内容是什么?

我尝试在“存储”事件侦听器中添加一个 console.log,但这只是每次都记录相同的值;显然,任何循环都是一遍又一遍地写入相同的值,所以这无助于找出导致循环的原因:

addEventListener('storage', () => {
    console.log(JSON.stringify(localStorage));
});

每当有东西写入 localStorage 时,我如何控制台记录键和值?

【问题讨论】:

    标签: javascript browser


    【解决方案1】:

    在调用原始函数之前,您可以使用 console.log 的包装函数覆盖默认的 javascript localStorage.setItem:

    const oldSetItemFunction = window.localStorage.setItem.bind(window.localStorage);
    window.localStorage.setItem = (key, value) => {
      console.log(`Setting local storage.
       - Key: ${key}
       - Value: ${value}`);
      oldSetItemFunction(key, value);
    }
    

    【讨论】:

    • 你不是得到Uncaught TypeError: Illegal invocation at window.localStorage.setItem吗?
    • 您还可以抛出错误,以便检查堆栈跟踪,这可能会有所帮助,具体取决于您尝试执行的调试类型。不幸的是,通常使用点符号而不是 setItem 来查看对本地存储的分配,这种方法不会拦截。
    猜你喜欢
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    相关资源
    最近更新 更多