Servus
Langsam werd ich wahnsinnig...
Kann man gespeicherte Werte eines AddOns (hier: Icon-Farbe) wirklich nur über das Message-API in ein content-Script überführen?
Gegeben ist ein Wert in einem Array (config.marker.farbe), der sich über eine options.html und darin eingebundene options.js verändern lässt. Die eigentliche Veränderung funktioniert, da sich in der options.html die Darstellung entspechend der Vorgabe im select-Feld verändert. Aber wenn ich dann eben diesen Wert (wie geschrieben: config.marker.farbe) in einem content-Script benutze, ist es noch der Ausgangswert. Die Veränderung kommt im content-Script nicht an.
Muss man jetzt wirklich über das Message-API eine (asynchrone...) Anfrage an die backend.js stellen, um den Wert zu erhalten?
Wenn ja, habe ich noch ein Problem: Bei kurzen Tests gerade eben schien es so, als käme die Änderung des Werts auch in der backend.js nicht an. Die spuckte mir nämlich gerade bei console.log(config.marker.farbe) den ursprünglich definierten Wert aus.
Zur Erklärung: Das content-Script (inject.js) schiebt bei Passwort-Feldern ein Icon ins Input-Feld, welches bei Mausklick ein generiertes Passwort in eben dieses Feld schickt. Die eigentliche "injection" funktioniert tadellos. Das Icon erscheint nur bei Passwort-Feldern, ein Mausklick führt dazu, dass eine in "api.js" enthaltene Funktion aufgerufen wird, und das Passwort landet im Input-Feld. Alles so wie es soll. Aber mein Versuch eine Möglichkeit anzubieten, dem Icon eine andere Farbe zuzuweisen, scheitert daran, dass das content-Script scheinbar nichts von der Farbänderung mitbekommt. Übrigens auch nicht bei extra neu geladenen Seiten.
Ich dachte bisher immer, dass sowohl Hintergrundscript als auch eventuelle API- und Optionsscripte sich denselben "Variablen-Raum" teilen. Von content-Scripten gar nicht zu reden. Aber obwohl die Änderungen in der options.html scheinbar funktionieren, kommen sie weder in background.js noch in content.js an.
Um Fehlern vorzubeugen habe ich die originale Zuweisung in der api.js gerade auf den Fall beschränkt, wenn die Variable noch nicht existiert:
Aber daran scheint es auch nicht zu liegen. Laut MDN kann man zwischen background und content-Scripten Nachrichten austauschen, aber dazu müsste die eigentliche Änderung erstmal im background-Script ankommen...
Wo liegt mein Denkfehler? Danke schon mal für Tipps!