【问题标题】:Clearing Chrome extension localStorage from within popup.js从 popup.js 中清除 Chrome 扩展 localStorage
【发布时间】:2015-09-20 02:26:33
【问题描述】:

除了一件事之外,我的扩展程序中的所有内容都在工作!我想通过popup.js清除这个扩展的本地存储。这是一个简单的扩展,可以保存来自某个域的表单数据。

目前,在我的内容脚本 (save.js) 中,我正在通过 localStorage[key] 访问本地存储,但似乎我无法通过 popup.js 执行此操作,并且我得到一个“未定义”,我假设它预期的行为。

我已经尝试过 localStorage.clear();来自我的 popup.js 但这没有效果。大概是因为它希望从扩展本身中清除不存在的 localStorage?

如何从 popup.js 访问和清除 save.js 一直使用的本地存储?

popup.js

document.getElementById('clearAllData').addEventListener('click', clear);

function clear(){
	localStorage.clear();
 }
 
 

我如何在 save.js 中保存数据的片段

function saveTicket(ticket, contents) {
	localStorage[ticketID] = contents;
}

【问题讨论】:

    标签: javascript html google-chrome google-chrome-extension local-storage


    【解决方案1】:

    您没有正确使用回调。您需要异步传递函数。例如:

    function clear(){
       chrome.storage.local.clear(function(obj){
          console.log("cleared");
          });
     }
    

    不过也可能是这样。 Chrome 存储空间已经在本地。

    function clear(){
       chrome.storage.sync.clear(function(obj){
          console.log("cleared");
          });
     }
    

    【讨论】:

    • 不幸的是,这没有奏效。我不确定我理解 obj 应该是什么?这不应该只是完全擦除存储而不需要传递对象吗? PSA - 我不确定我在说什么。
    • 函数解析后chrome扩展的响应。您可以将其留空,因为您不需要这些数据。
    • 谢谢,但是数据仍然存在。它似乎仍然没有做任何事情
    • 因为您需要阅读扩展存储部分。 localStorage != chrome.storage
    • 哦,我明白了。我已更新我的问题以反映此信息。
    【解决方案2】:

    您应该使用chrome.storage 而不是localStorage。当您在内容脚本中使用 localStorage 时,它​​是页面的,而不是您的扩展的。但是,当您在内容脚本中使用 chrome.storage 时,它​​就是您的扩展程序的存储空间。

    【讨论】:

      猜你喜欢
      • 2016-09-13
      • 1970-01-01
      • 1970-01-01
      • 2018-10-27
      • 2013-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多