我试图了解如何使用 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/