javascript - 在 chrome.storage.local.set 中使用可变键

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

<分区>

我正在创建一个 chrome 扩展程序。 我不知道如何使用变量作为 chrome.storage.local.set() 函数的键。我试过了

var key = 'myKey';
chrome.storage.local.get(key, function(val) { 
    chrome.storage.local.set({key:val[key]+param1}); //appending  param1
    alert(val[key]);
}

我在这里尝试获取 val[key] 的值并附加一个字符串 param1 并使用相同的 key 将其放回存储。但我不能这样做。 警告框一直显示未定义。


但是当我尝试不使用变量 key 时,它工作正常

chrome.storage.local.get('myKey', function(val) { 
    chrome.storage.local.set({myKey:val['myKey']+param1}); //appending  param1
    alert(val['myKey']);
}

问题是我正在使用 chrome.storage.local.set 参数不仅可以是字符串,还可以是对象。

最佳答案

在 JavaScript 中,使用非静态变量名的唯一方法是将值作为属性分配,而不是使用对象字面量。

var key = 'myKey';
var param1 = 'whatever';
chrome.storage.local.get(key, function(val) {
    // Create property if does not exist (yet)
    if (typeof val[key] != 'string') val[key] = '';
    // Append value of param1
    val[key] += param1;
    // Save data
    chrome.storage.local.set(val);
    alert(val[key]);
});

注意:您可能想要验证 set成功了。这可以通过使用回调来完成。例如:

    chrome.storage.local.set(val, function() {
        if (chrome.extension.lastError) {
            alert('An error occurred: ' + chrome.extension.lastError.message);
        }
    });

关于javascript - 在 chrome.storage.local.set 中使用可变键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14982560/

相关文章:

javascript - 从 chrome.storage.local 获取原始值

javascript - 使用其他对象的键查找对象中的键/值

javascript - 使用几种不同的模态

javascript - `delay` 不是函数 (jQuery 1.3)

javascript - 通过内容脚本设置的间隔被网页清除

css - 实验性 chrome 历史扩展

javascript - 将对象保存到 Chrome 存储,但检索时得到不同的结果

javascript - <Link> 点击时卡住页面

javascript - Chrome扩展-通过后台脚本获取Active Tab的DOM信息

javascript - 未捕获的类型错误 : Cannot read property 'local' of undefined in chrome extension