使用网址作为Chrome本地存储字典中的密钥

时间:2013-07-15 21:30:42

标签: javascript google-chrome-extension

我正在尝试在Chrome的本地存储中存储一些值列表,以便在Chrome扩展程序中使用。由于每个列表都与URL相关,因此我尝试将URL用作键值存储中的键。但是,出于某些原因,使用网址作为键时,set()似乎失败了(即使typeof(url_variable)显示它只是一个字符串)但是如果我使用一些人为的字符串,例如"hello",我能够正常检索存储的对象。

使用网址作为密钥是否有限制? API中没有提及它。

应该注意的是,Chrome没有设置runtime.lastError,当我尝试get()以前使用网址set()的密钥时,查找失败了。

这是代码,供参考:

function addNode(url, referrer) {
  nodes = chrome.storage.local;
  edge = {
    in_node: referrer,
    timestamp: Date()
  };

  nodes.get(url, function(current_node){
    console.log(current_node);
    if ( $.isEmptyObject(current_node) === false ) {
      // never executes, because set doesn't work
    }
    else {
      console.log("set: "+url);
      nodes.set({url:[edge]}, function(){
        if ( chrome.runtime.lastError ) {
          console.log(chrome.runtime.lastError);
        }
        else {
          console.log("get: "+url);
          chrome.storage.local.get(url, function(thing) {console.log(thing)});
          console.log("Created new Node for url " + url + " and new edge from " + edge.in_node + " at time " + edge.timestamp);
        }
      });
    }
  });
}

1 个答案:

答案 0 :(得分:0)

如何首先创建对象How to use chrome.storage in a chrome extension using a variable's value as the key name?

也可以尝试除异常外,而不是使用if块?