Chrome 扩展程序是不是可以访问本地存储?

Posted

技术标签:

【中文标题】Chrome 扩展程序是不是可以访问本地存储?【英文标题】:Do Chrome extensions have access to local storage?Chrome 扩展程序是否可以访问本地存储? 【发布时间】:2011-01-10 07:37:45 【问题描述】:

是否可以在 chrome 扩展的上下文中以浏览器重启后可访问的方式存储数据?

【问题讨论】:

【参考方案1】:

比这更简单:

阅读:

    var myStoredValue = localStorage["TheKeyToMyStoredValue"];

写作:

    localStorage["TheKeyToMyStoredValue"] = myNewValueToStore;

摆脱:

    delete localStorage["TheKeyToMyStoredValue"];

【讨论】:

你先生是99级的德鲁伊和圣人。 很好的答案。请注意,这不适用于内容脚本。我很困惑,直到我找到this【参考方案2】:

是的,是的。详细了解如何执行此操作可能会超出合理的 *** 答案的长度,因此我将向您推荐 Rajdeep Dua 的 this very extensive tutorial

相关代码如下所示:

// Store item in local storage:
function setItem(key, value) 
  try 
    log("Storing [" + key + ":" + value + "]");
    window.localStorage.removeItem(key);      // <-- Local storage!
    window.localStorage.setItem(key, value);  // <-- Local storage!
   catch(e) 
    log("Error inside setItem");
    log(e);
  
  log("Return from setItem" + key + ":" +  value);


// Gets item from local storage with specified key.
function getItem(key) 
  var value;
  log('Retrieving key [' + key + ']');
  try 
    value = window.localStorage.getItem(key);  // <-- Local storage!
  catch(e) 
    log("Error inside getItem() for key:" + key);
  log(e);
  value = "null";
  
  log("Returning value: " + value);
  return value;


// Clears all key/value pairs in local storage.
function clearStrg() 
  log('about to clear local storage');
  window.localStorage.clear(); // <-- Local storage!
  log('cleared');


function log(txt) 
  if(logging) 
    console.log(txt);
  

【讨论】:

教程的链接已损坏,但示例仍然存在。这里是教程的例子chrome.google.com/webstore/detail/… 这个 API 也做得很好:developer.chrome.com/extensions/storage.html 它还允许您将数据同步到您的个人资料中【参考方案3】:

现在最好使用chrome.storage chrome.storage 是异步的,这使其速度更快,并且 localStorage 限制为 5MB。

【讨论】:

“这使它更快” [需要引用] 正如 chrome 开发者 here 指定的那样,批量非阻塞读写操作比阻塞和串行 localStorage API 更快。 感谢您的链接!【参考方案4】:

这里已经有一些很好的答案,但请注意,如果您决定在扩展程序中使用内容脚本,则该内容脚本将无法访问 localStorage。因此chrome.storage 是一个不错的选择。

【讨论】:

技术上它可以访问localStorage——它将是运行内容脚本的域的本地存储(与页面本身共享)。跨度> 【参考方案5】:

当前的 chrome 版本有本地存储。

我自己用过。您可以使用modernizr 来检测浏览器是否支持它。 我已经为客户端编写了一个解决方案,如果不存在本地存储,我会回退到 cookie,但这对于扩展来说应该不是问题。

【讨论】:

【参考方案6】:

Chrome 还支持 HTML5 Web Database 规范。这为您提供了一个本地 SQL 数据库,因此您可以做比简单地将名称/值对存储在本地存储中更复杂的事情。

【讨论】:

以上是关于Chrome 扩展程序是不是可以访问本地存储?的主要内容,如果未能解决你的问题,请参考以下文章

chrome 扩展通过共享本地存储将多条消息传递到外部站点

从 Chrome 扩展程序访问网页的 localStorage

列出带有 chrome 扩展名的本地目录

Chrome扩展开发之三——Chrome扩展中的数据本地存储和下载

如何同步 chrome 扩展选项

如何链接到 Google Chrome 扩展程序的本地图像?