chrome.storage.sync.set不保存值

时间:2013-06-26 23:10:00

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

所以我对谷歌Chrome上的本地存储有点疑虑。根据我的研究,我的语法似乎是正确的,但由于某种原因,价值没有被保存。这是我的代码:

chrome.storage.sync.get(accName, function(data) {
    var accData = data[accName];
    // Stuff
    chrome.storage.sync.set({ accName: accData }, function() {
        alert('Data saved');
    });
});

每次重新运行时,data[accName]都会返回undefined。我已经尝试使用sync.set参数的文字值相同的代码(例如。{ 'john32': ['fk35kd'] }),这似乎有效,所以我真的很困惑这个问题是什么。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:10)

谢谢罗布。如上所述,问题是尝试将accName插入set语句中的对象文字。我最终得到的是一个具有属性'accName'的对象,而不是accName本身的值。这是一个修复。

var obj = {};
obj[accName] = accData;
chrome.storage.sync.set(obj, function() {
    alert('Data saved');
});

更新

ES6现在允许computed property names in object literals,因此可以通过以下方式实现上述目标:

chrome.storage.sync.set({ [accName]: accData }, function() {
    alert('Data saved');
});