我正在尝试在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);
}
});
}
});
}
答案 0 :(得分:0)
如何首先创建对象How to use chrome.storage in a chrome extension using a variable's value as the key name?
也可以尝试除异常外,而不是使用if块?