我试图将数组存储到chrome存储区以获取扩展名,但似乎没有存储任何内容。 我正在使用此代码进行测试(在我的content.js中)
profil="myp";
domain="myd";
datas={};
datas[profil]={};
datas[profil]['orange']="mure";
datas[profil]['voiture']="rapide";
console.log("to save: "+domain+" "+JSON.stringify(datas));
chrome.storage.sync.set( {domain: datas}, function() { console.log('Settings saved'); } );
//I know I must does that later but the logs are in the right order
datas={};
chrome.storage.sync.get( domain, function(items)
{
console.log("items: "+JSON.stringify(items));
}
日志:
to save: myd {"myp":{"orange":"mure","voiture":"rapide"}}
content.js:147 Settings saved
content.js:154 items: {}
我有许可"存储"在我的清单文件中。 我有什么遗忘的吗?
由于
答案 0 :(得分:2)
chrome.storage.sync.set
和chrome.storage.sync.get
期望一个对象,他们使用该对象的属性作为商店的键。
当您致电chrome.storage.sync.get
时,您需要一个名为domain
的属性的对象,如果当前没有任何内容,则该值将是默认值。
尝试:
chrome.storage.sync.get( { domain: [] }, function(items)
{
console.log("items: "+JSON.stringify(items));
}
但是,看起来您使用domain
作为参数,所以:
所以:
const domain = "myd";
// Store
let store = {};
store[domain] = datas;
chrome.storage.sync.set(store, () => console.log('Settings saved'));
// Retrieve
let key = {};
key[domain] = []; // Default
chrome.storage.sync.get(key, items =>
console.log(`items: ${JSON.stringify(items)}`));