2016-07-11 10 views
-1

Ich versuche, eine Google Chrome-Erweiterung zu schreiben, und ich verwende die chrome.storage-API.Chrome-Erweiterung: Zugriff auf einen von vielen Werten mit demselben Schlüssel

Ich bin Speichern der URL einer Seite mit:

chrome.storage.local.set({'url': document.URL}); 

Aber diese Funktion mehrere Male, und so in der Speicher gibt es mehrere unterschiedliche URLs mit der gleichen ‚url‘ Schlüssel genannt.

den Wert erhalten, die ich benutze:

chrome.storage.local.get('url', function (urlResult) { 
url = urlResult.url; 
document.getElementById("urlInfo").innerHTML = url; 
}); 

Aber dies wird in den Schlüssel nur die letzte der gespeicherten Werte zurück. Also zum Beispiel, wenn ich https://stackoverflow.com/ zuerst und https://github.com/ Sekunde besuchen, wird mein Code nur die GitHub-Adresse zurückgeben. Ist es möglich, auf den Stackoverflow-Wert zuzugreifen, obwohl mehrere Werte für denselben Schlüssel vorhanden sind?

Danke!

+4

Sie sind für die Wunder von Arrays suchen. – SLaks

+0

Danke für deinen Tipp @SLaks! – hollaholl

Antwort

2

Wie @SLaks erwähnt, könnten Sie URLs in einem Array speichern.

Set:

chrome.storage.local.get({urls: []}, function (result) { 
    var urls = result.urls; 
    urls.push(document.URL); 
    chrome.storage.local.set({ urls: urls }); 
}); 

Get:

chrome.storage.local.get({urls: []}, function (result) { 
    var urls = result.urls; 
    var url1 = urls.find((url) => url === 'https://www.stackoverflow.com'); 
    var url2 = urls.find((url) => url === 'https://www.github.com'); 
}); 
+0

Es funktioniert! Vielen Dank! Ich habe noch eine Frage. Ich habe meine lokale Speicherdatei überprüft, und jedes Mal, wenn dem Array ein neues Element hinzugefügt wird, behält es das vorherige Array bei und hängt das neue Array an die gleiche Datei an. Nach dem Besuch von stackoverflow.com und github.com habe meine Datei also ["stackoverflow"], ["stackoverflow", "github"]. Ich habe 'chrome.storage.local.remove ({urls: urls});' vor dem "set" versucht, aber dadurch scheint der nächste "set" nicht zu funktionieren. Irgendwelche Vorschläge? :( – hollaholl

+0

@hollaholl, was ist "lokale Speicherdatei"? Und wie fügen Sie das Element zum Array hinzu? –

+0

Durch "lokale Speicherdatei" meine ich, wo die Informationen gespeichert sind. Es ist in 'C: \ Users \ Meinename \ AppData \ Local \ Google \ Chrome \ Benutzerdaten \ Standard \ Lokale Erweiterungseinstellungen \ eilllankkpchokjofpgnhjbfppmhjckh'. Der Dateiname ist '000003.txt'. Die Datei sieht etwas unordentlich aus, aber sie behält das vorherige Array eindeutig bei und fügt das neue hinzu Elemente zu dem Array in genau der Weise, die Sie mir mit Push gezeigt haben: 'chrome.storage.local.get ({urls: []}, Funktion (Ergebnis) { var urls = result.urls; urls.push (document.URL); chrome.storage.local.set ({urls: urls}); }); ' – hollaholl