Sya*_*r S 4 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]);
}
Run Code Online (Sandbox Code Playgroud)
在这里,我试图获取值val[key]并附加一个字符串,param1并使用相同的密钥将其放回存储.但我无法这样做.警报框始终显示未定义.
但是当我尝试没有变量时key,它工作正常.
chrome.storage.local.get('myKey', function(val) {
chrome.storage.local.set({myKey:val['myKey']+param1}); //appending param1
alert(val['myKey']);
}
Run Code Online (Sandbox Code Playgroud)
问题是我使用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]);
});
Run Code Online (Sandbox Code Playgroud)
注意:您可能希望验证是否set成功.这可以通过使用回调来完成.例如:
chrome.storage.local.set(val, function() {
if (chrome.extension.lastError) {
alert('An error occurred: ' + chrome.extension.lastError.message);
}
});
Run Code Online (Sandbox Code Playgroud)
我已经解决了这个问题。而不是使用chrome.storage.local.set({key:val[key]+param1});
我已经用一个对象替换了 json 字符串{key:val[key]+param1}。
var obj = {};
var key = "myKey";
obj[key] += param1;
chrome.storage.local.set(obj);
Run Code Online (Sandbox Code Playgroud)
这里obj有价值{"myKey":"the appended value"}