无法获取chrome存储空间以加载任何内容

时间:2017-04-25 17:14:37

标签: javascript google-chrome google-chrome-extension

我试图将数组存储到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: {}

我有许可"存储"在我的清单文件中。 我有什么遗忘的吗?

由于

1 个答案:

答案 0 :(得分:2)

chrome.storage.sync.setchrome.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)}`));