来自Chrome存储集的意外字符串

时间:2013-11-10 22:20:56

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

我在检查密钥是否已经存在后尝试在localStorage中设置,但是我收到了这个错误。任何人都知道发生了什么,我该如何解决?

chrome.storage.sync.get($div.attr('id'),function(items){
    var lastError = chrome.runtime.lastError;
    if (lastError) console.log($div.attr('id')+" does not exist.\n", lastError);
    else chrome.storage.sync.set({$div.attr('id'):$div.html()}, function(){}); //I'm having the error from this line
});
  

未捕获的SyntaxError:意外的字符串

修改 显然这与attr('id')有关 因为我创建了一个变量,然后问题就消失了。无论如何,谢谢你 这是有效的:

var myobj = {}, key = $div.attr('id');
myobj[key] = $div.html();
chrome.storage.sync.get(key,function(items){
    var lastError = chrome.runtime.lastError;
    if (lastError) console.log(key+" does not exist.\n", lastError);
    else chrome.storage.sync.set(myobj, function(){}); //The error is gone
});

1 个答案:

答案 0 :(得分:4)

问题不在于attr本身,而在于您尝试使用它在新对象文字上动态设置密钥的方式:

{$div.attr('id'):$div.html()}

您无法以这种方式创建对象文字。创建对象文字的关键字必须是字符串或数字文字。

要将动态键附加到对象,您宁愿执行以下操作:

else {
  var obj = {}, key = $div.attr('id');
  obj[key] = $div.html();
  chrome.storage.sync.set(obj, function(){});
}