kostenloser Webspace werbefrei: lima-city


Werte mit function aus chrome.storage.sync lesen?

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    mathesoft

    Kostenloser Webspace von mathesoft

    mathesoft hat kostenlosen Webspace.

    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?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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
  4. Autor dieses Themas

    mathesoft

    Kostenloser Webspace von mathesoft

    mathesoft hat kostenlosen Webspace.

    Hmm... ja, blöd. Ich bin mein Delphi so gewohnt :smile:

    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 :wave:

    Danke für deine Antwort.
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!