0
エクステンションのクロムストレージに配列を格納しようとしていますが、何も格納されていないようです。 私は(私の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: {}
私は私のマニフェストファイルのパーミッション「ストレージ」を持っています。 私が忘れているものはありますか?
おかげ
私は「CONSTで試してみました、あなたの提案を見てドメイン "が動作しませんでしたが、私はドメインを" myd "で直接置き換え、それは(自分のコードで)うまくいったのです。変数を "メインキー"として使用することは不可能であると思われるので、私の配列にドメインを含めるように変更します...とにかく助けてくれてありがとう。 – Entretoize
私は最終的にいくつかのreflaxionの後にそれを得ました、多分あなたはgetとset内の関数宣言された方法を変更してはいけません、問題の原因ではなかったので、ありがとう。 – Entretoize
@Entretoize例は、コピー・ペースト・ドロップイン・コードではなく、例示的なものです。あなたの変数をどのように宣言しているのか分かりませんが、厳密に ';'を使用するのがベストプラクティスです。 '' var''、 '' let''(ローカルスコープ)、 ' (再割り当てすることはできません)ので、私は私の例でそれを行います。私が怠けているのでコールバック関数は単純化されています;-)自分のコードでは、コールバックを完全に避けるために、 '' chrome-extension-async'(https://github.com/KeithHenry/chromeExtensionAsync)を 'await' 。 – Keith