Teste localStorage in einem Live-Playground und kopiere funktionierende Beispiele für gespeicherte Einstellungen, einen Warenkorb und ein Theme, dazu JSON-Handling, Größenlimits, Fehler und Sync zwischen Tabs.
localStorage ist ein Schlüssel-Wert-Speicher im Browser pro Origin, der Daten auch nach dem Schließen von Tab und Browser behält. Mit setItem(key, value) speicherst du, mit getItem(key) liest du, mit removeItem(key) löschst du, und clear() leert ihn. Werte sind immer Strings, also verpacke Objekte mit JSON.stringify und JSON.parse.
Die komplette Storage API auf einen Blick
Die meisten localStorage-Bugs entstehen aus drei Überraschungen: Alles wird zum String, der Aufruf kann eine Exception werfen, und die Daten hängen an genau einem Origin. Der Playground unten schreibt in deinen eigenen Browser, damit du diese Regeln in Aktion siehst. Danach zeigen die Beispiele sichere Muster für Einstellungen, einen Warenkorb und einen Theme-Umschalter.
MDN dokumentiert in aktuellen Browsern ein Limit von 5 MiB localStorage pro Origin, mit separaten 5 MiB für sessionStorage. Strings werden als UTF-16 gespeichert, daher passen weniger Zeichen hinein, als die Byteanzahl vermuten lässt. Wer über das Limit hinaus schreibt, löst einen QuotaExceededError aus.
Nein. Einträge bleiben, bis dein Code sie entfernt oder der Besucher die Websitedaten löscht. In einem privaten Fenster löscht der Browser sie, wenn der letzte private Tab geschlossen wird. Wenn du ein Ablaufdatum brauchst, speichere einen Zeitstempel mit dem Wert und prüfe ihn beim Lesen.
setItem macht aus allem, was du übergibst, einen String. Ein einfaches Objekt wird zum Text [object Object], und die Daten gehen verloren. Speichere JSON.stringify(obj) und lies es mit JSON.parse zurück.
Nein. Der Speicher gehört zu einem Origin, also Schema, Host und Port zusammen. http://example.com und https://example.com bekommen jeweils einen eigenen Speicher, ebenso Subdomains.
Lausche auf das storage-Event auf window. Es feuert in den anderen offenen Dokumenten desselben Origins, wenn eines davon einen Wert ändert, und liefert key, oldValue und newValue. Der Tab, der die Änderung vorgenommen hat, erhält es nicht.
Cookies werden bei jeder Anfrage an den Server geschickt und eignen sich für Sessions. localStorage verlässt nie den Browser, fasst mehr und eignet sich für Oberflächenzustände wie ein Theme, einen Entwurf oder eine eingeklappte Seitenleiste.
Wähle den Speicher danach, wie lange die Daten leben sollen und wer sie braucht
Eine Stelle behandelt blockierten Speicher, ein volles Kontingent und kaputtes JSON, damit der Rest deines Codes das nie tun muss.
Standardwerte werden mit dem Gespeicherten zusammengeführt, sodass eine später hinzugefügte Einstellung ältere gespeicherte Daten nicht kaputt macht.
Jede Änderung erzeugt ein neues Array und schreibt es zurück. Die Preise legt beim Checkout weiterhin der Server fest.
Ist nichts gespeichert, gewinnt die Einstellung des Betriebssystems. Führe das früh im head aus, um ein Aufblitzen des falschen Themes zu vermeiden.
localStorage hat kein eingebautes Ablaufdatum, also speichere die Frist mit dem Wert und verwirf veraltete Einträge beim Lesen.
Das storage-Event erreicht jeden anderen Tab auf demselben Origin, sodass sich ein Warenkorb-Badge ohne Neuladen aktualisieren kann.
Der Speicher ist in diesem Browser blockiert, daher würde jeder Aufruf eine Exception werfen. Dein Code braucht einen Fallback.
{name} geworfen: {message}
Gib zuerst einen Schlüssel ein.
{call} hat {n} Zeichen gespeichert.
{call} hat null zurückgegeben: Es gibt keinen Eintrag mit diesem Schlüssel.
JSON.parse hat zurückgegeben: {value}
Der gespeicherte Text ist kein JSON: {value}
{call} hat den String {value} zurückgegeben
{call} erledigt.
{n} Playground-Einträge entfernt. Andere Schlüssel dieser Website blieben unberührt.
Speichere, lies und lösche Einträge in deinem eigenen Browser und sieh jeden Schlüssel, den diese Website speichert. Playground-Schlüssel beginnen mit demo:, damit sie nie mit der Website kollidieren.
Schlüssel
Wert
Werttyp
Einfacher String
Objekt (JSON)
Speichern
Lesen
Löschen
Playground-Schlüssel leeren
Ergebnisse erscheinen hier.
In deinem Browser gespeicherte Playground-Einträge ({n})
Gespeicherter String
Kostenlos starten · Keine Kreditkarte nötig