58

データ オブジェクトを chrome 同期ストレージに保存して取得しようとしていますが、get() 関数は常に空のオブジェクトを返します。私が使用しているコードは、

function storeUserPrefs() {
    var key='myKey', testPrefs = {'val': 10};
        chrome.storage.sync.set({key: testPrefs}, function() {console.log('Saved', key, testPrefs);});
}

function getUserPrefs() {
    chrome.storage.sync.get('myKey', function (obj) {
        console.log('myKey', obj);
    });
}

誰かが私がここで間違っていることを教えてもらえますか?

4

5 に答える 5

77

問題はchrome.storage.sync.set({key: testPrefs}

あなたのデータは次のように保存されます

{
    key: "{"val":10}"
}

したがって、コードはundefined\empty objectchrome.storage.sync.get('myKey')を返します。

ソリューション I

文字列"key"をキーとして使用する

chrome.storage.sync.get("key", function (obj) {
    console.log(obj);
});

また

ソリューション II

"myKey"Key でデータを設定します。

chrome.storage.sync.set({"myKey": testPrefs})

PSchrome.storage.sync :永続的なストレージ API であることを忘れないでください。さらにテストを行う前に、 chrome.storage.sync.clearを使用して変更を確認してください。

参考文献

編集1

このコードを使用して、Chrome.storage に変数値を設定します

function storeUserPrefs() {
    var key = "myKey",
        testPrefs = JSON.stringify({
            'val': 10
        });
    var jsonfile = {};
    jsonfile[key] = testPrefs;
    chrome.storage.sync.set(jsonfile, function () {
        console.log('Saved', key, testPrefs);
    });

}

次の出力を生成します

Object{
    myKey: "{"val":10}"
}
于 2013-01-26T03:06:35.030 に答える
2

chrome.storage.sync は JS オブジェクトを格納できるため、次のようにするだけです。

var save = {};
save["myKey"] = testPrefs;

chrome.storage.sync.set(save, function() {
    console.log('Settings saved');
});
于 2013-06-28T12:35:28.193 に答える
0
testPrefs = JSON.stringify({
            'val': 10
        });
    var jsonfile = {};
    jsonfile[key] = testPrefs;
    chrome.storage.sync.set(jsonfile, function () {
        console.log('Saved', key, testPrefs)
于 2013-11-21T18:36:10.600 に答える