Werte mit function aus chrome.storage.sync lesen?
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
anwenden
auslese
code
detail
ding
eingestellte aufschrift
einlesen
einstellung
festen code
funktioniert danke
gespeichert code
gespeicherten daten
item
mache
obigem muster
option
punkt
set
speichern
versucht nix
-
Hallo,
ich bastel nun an einer Extension für Chrome.
Funktioniert soweit ganz prima.
Jetzt bin ich an dem Punkt, wo ich auf meiner Optionen-Seite die Einstellungen speichern und wieder auslesen möchte.
Dazu habe ich auf stackoverflow schon einiges gefunden und das Speichern und wieder-einlesen auf der Optionen-Seite klappt auch.
Ich möchte jetzt aber auch in meinem content.js die Optionen anwenden. Also dachte ich mir, eine function zu schreiben, mit der ich individuell einen Wert prüfen kann, zB ob eine Checkbox checked ist oder nicht.
var storage = chrome.storage.sync; function $(id) { return document.getElementById(id); } //Liest die Einstellungen der Optionsseite ein document.addEventListener('DOMContentLoaded', floadOpt); //diese sind auf der Options-Seite angelegt: var chkTitle = $('chk_tit'); //checkbox var edTitle = $('ed_title'); //Textfeld function floadOpt() { storage.get({ //defaults: chkTitle: true, edTitle: "Details" }, //callback function(items) { chkTitle.checked = items.chkTitle; edTitle.value = items.edTitle; } ); } var btnSave = $('buttonSave'); btnSave.addEventListener('click', fsaveOpt); function fsaveOpt() { storage.set({ 'chkTitle': chkTitle.checked, 'edTitle': edTitle.value }, function() {alert("Gespeichert!");} ); }
So, und in meinem content.js generiere ich zB einen Button, der die eingestellte Aufschrift haben soll.
Und jetzt kommt meine Frage:
Wie kann ich eine Function erstellen, die mir aus den gespeicherten Daten einen Wert herausliest?
Der normale Weg wäre, immer mit dem festen Code zu arbeiten und für jede Option eine function anzulegen?!
//content.js var storage = chrome.storage.sync; //normaler weg, um 1 Feld names "purzelbaum" einzulesen // storage.get("purzelbaum", function(items) { // document.getElementById("purzelbaum").innerText = items.purzelbaum; // }); //also dachte ich mir..., nach obigem Muster sollte das doch gehen? function getStor(dings) { storage.get(dings, function(items) { return items.dings; }); } //und so anwenden var ButtonTitel = getStor("edTitle"); //oder mal eben ein if (getStor("chkTitle")) ...
Funktioniert aber nicht - "undefined"; ich habe auch schon { return items[dings]; } und { return items["dings"]; } versucht, nix. Wie geht das, wenn ich eine dynamische function für meine 20 Optionen (die zwei sind ja nur ein Beispiel) verwenden will? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Das ist leider nicht so einfach.
Der callback wird asynchron ausgeführt, somit kann die Funktion keine Daten zurückgeben.
Du musst also zwangsläufig asynchron programmieren durch callbacks.
function getStored(key, callback) { chrome.storage.sync.get(d, function(items) { callback(items[d]); }); } getStored("chkTitle", function(value) { if (value) { //mache irgendwas mit dem inhalt von chkTitle... } });
Mfg ITgenie98
-
Hmm... ja, blöd. Ich bin mein Delphi so gewohnt
Ich mache es jetzt wie auf der Options-Seite. Ich lese komplett alle Werte in Variablen, dann habe ich sie verfügbar. Finde ich zwar nicht so elegant, aber funktioniert
Danke für deine Antwort. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage