google-chrome - chrome.storage.sync 与 chrome.storage.local

标签 google-chrome google-chrome-extension

我试图了解如何使用 chrome.storage.api。 我已将以下内容包含在我的 manifest.json 中:

"permissions": [
"activeTab","storage"
],

然后,我使用开发工具打开了一个新选项卡并切换了 <page context>到我的 chrome 扩展之一。比我输入的:

chrome.storage.sync.set({"foo":"bar"},function(){ console.log("saved ok"); } );

得到:

undefined
saved ok 

比我尝试获取这个存储值:

chrome.storage.sync.get("foo",function(data){ console.log(data); } );

但这让我感动:

undefined
Object {} 

我也做了同样的事情,但不是 sync我用过local这按预期工作:

chrome.storage.local.set({"foo":"bar"},function(){ console.log("saved ok"); } );

..以及检索:

chrome.storage.local.get("foo",function(data){ console.log(data); } );

这让我:Object {foo: "bar"}正如它应该的那样。

这是因为我没有在 Chrome 上登录我的帐户吗?但在这种情况下,不是 chrome.storage.sync旨在回退到本地存储数据?

编辑

奇怪的是,当我直接在控制台上输入此内容时,它似乎可以正常工作,但此代码不是从点击监听器内的 background.js 代码运行:

var dataCache = {};

function addStarredPost(post)
{
  var id = getPostId(post);
  var timeStamp = new Date().getTime();
  var user = getUserName();

  dataCache[id] = {"id":id,"post":post,"time":timeStamp,"user":user};
  chrome.storage.sync.set(dataCache,function(){ console.log("Starred!");});
}

运行后,chrome.storage.sync.get(null,function(data){ console.log(data); });返回一个空对象,就好像未存储数据一样。 :/ 这段代码似乎与 chrome.storage.local 完美配合相反。

chrome.runtime.lastErros返回undefined

最佳答案

Chrome 本地存储的最大大小为 5,242,880 字节。 要扩展存储,您可以在manifest.json中添加:

"permissions": [
  "unlimitedStorage"
]

Chrome 同步存储的最大大小为:

  • 总共 102,400 字节
  • 每个项目 8,192 字节
  • 最多 512 项
  • 每小时 1,800 次写入操作
  • 每分钟 120 次操作

( source )

关于google-chrome - chrome.storage.sync 与 chrome.storage.local,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22636771/

相关文章:

google-chrome - Chrome - 通知用户安装您的扩展程序

javascript - 查看单击按钮时执行的脚本

javascript - 如何从内容脚本调用 chrome.tabs.create API?

javascript - 如何使用 Jquery 检测滚动速度?

php - 从 PHP 生成 Chrome .crx

javascript - 在导航到新页面时保持 Chrome 扩展弹出窗口打开

javascript - 在 JavaScript 中使用异步函数

javascript - 如何使用 Google Chrome 自定义搜索引擎进行多参数查询?

html - Firefox 中的全尺寸 IFrame?

javascript - DOMParser 与模板和 innerHTML 的优势