Ich habe ein benutzerdefiniertes Menü erstellt, das mithilfe von Chrome Extensions Content Script an eine Seite angehängt wird. Die Erweiterung funktioniert super und das Menü erscheint genau so, wie ich es wollte.Chrome-Erweiterung Content-Skript für den Zugriff auf chrome.storage
Ich möchte ein wenig weiter gehen und eine Optionsseite mit einem Ein/Aus-Schalter hinzufügen, um die var menuToggle entweder 1 oder 0 definiert wird, und dass var wird auf eine IF-Bedingung gebunden sein:
IF menuToggle == 1 // Do something
ELSE // console.log("var is 0, menu not loaded");
Ich konnte dies in der Erweiterungsumgebung mit "localstorage.menuToggle = 1;", aber ich verstehe, dass dies nur für die Instanz innerhalb meiner Erweiterung funktioniert und dass das Content Script nicht auf diese Variable zugreifen kann.
Ich ging durch die official docs für die chrome.storage API, aber ehrlich gesagt, ich habe nicht viel verstanden, da ich in einem frühen Stadium der Programmierung bin.
Von dem, was ich gesehen habe, sollte ich die chrome.storage.sync.set dafür verwenden, aber ich habe nicht ganz, wie man dies richtig einstellen und entweder wie Sie die Daten einmal innerhalb des Inhaltsskript abrufen. Ich habe versucht, so etwas wie unten, aber es hat nicht funktioniert:
chrome.storage.sync.set({'menuToggle': '1'}, function(){});
Frage hier: Muss ich eine Funktion nach der sync.set definieren? Ist es möglich, die Daten einfach ohne jede Funktion zu speichern?
Bellow ist der Code, den ich mit dem localstorage verwendet:
var varMenuToggleDefault = 1;
localStorage.varMenuToggle = 1;
$("input:checkbox[name=onoffswitch]").change(function() {
if ($(this).is(':checked')) {
localStorage.varMenuToggle = varMenuToggleDefault;
console.log('Switch is ON');
console.log("Var is: " + localStorage.varMenuToggle);
} else {
localStorage.varMenuToggle = "0";
console.log('Switch is OFF');
console.log("Var is: " + localStorage.varMenuToggle);
}
if (localStorage.varMenuToggle == 1) {
// Load the menu
} else {
// console.log("varMenuToggle is 0. Menu NOT loaded");
};
Was falsch/fehlt ich tue?
Vielen Dank für die schnelle und einfache Antwort. Von dem, was ich verstehe, da ich zuerst den ** sync.get ** anfordern muss, um den Wert abzurufen, müsste ich meine If-Bedingung in das Inhaltsskript innerhalb des Callbacks einfügen, nachdem die Variable abgerufen wurde, ist das korrekt ? Etwas wie: 'chrome.storage.sync.get ("menuToggle", Funktion (Daten) {var menuToggle = data.menuToggle; if (menuToggle == 1) {etwas tun} }' – SoMeGoD
kämpfte ich ein bit testing dies, aber mit Ihrer Hilfe Ich schaffe es, den Wert zu setzen und abzurufen, um das Menü hinzuzufügen oder nicht.Ich weiß nicht, ob es der beste Weg ist, aber ich habe eine Event Page verwendet, um die Var zum ersten Mal zu setzen nach der Installation. – SoMeGoD