Usiłuję zapisać listę niektórych wartościLokalna pamięć Chrome do użytku w rozszerzeniu Chrome. Ponieważ każda lista koreluje z adresem URL, próbuję użyć adresu URL jako klucza w magazynie kluczy i wartości. Jednak z jakiegoś powodu set()
wydaje się nie działać, gdy używasz adresu URL jako klucza (chociaż typeof(url_variable)
ujawnia, że to tylko ciąg), ale jeśli użyję jakiegoś wymyślonego ciągu, takiego jak "hello"
, Jestem w stanie normalnie odzyskać przechowywany obiekt.
Czy istnieje ograniczenie używania adresów URL jako klucza? W API nie ma o tym żadnej wzmianki.
Należy zauważyć, że Chrome nie jest ustawiony runtime.lastError
, wyszukiwanie kończy się niepowodzeniem, gdy próbuję get()
klucz, który był wcześniej set()
z adresem URL.
Oto kod dla odniesienia:
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);
}
});
}
});
}
Odpowiedzi:
0 dla odpowiedzi № 1A może najpierw stworzysz obiekt w ten sposób? Jak korzystać z chrome.storage w rozszerzeniu chrome, używając wartości zmiennej jako nazwy klucza?
Może także spróbować oprócz wyjątku zamiast używać bloku if?