0Pricing
HTML Academy · Lektion

Auf Storage-Ereignisse reagieren

Reagieren Sie mit dem storage-Ereignis auf speicherbezogene Änderungen in anderen Tabs

Auf Storage-Ereignisse reagieren ist eine kostenlose HTML Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des HTML Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der HTML Academy-Kurs umfasst insgesamt 4 Lektionen.

Kommunikation zwischen Tabs

Web Storage löst bei jeder Änderung von localStorage ein storage-Ereignis in jedem anderen Tab derselben Origin aus. Dies ist die einfachste Möglichkeit, mehrere geöffnete Tabs derselben Anwendung synchron zu halten – beispielsweise um eine Abmeldung oder einen Designwechsel weiterzugeben.

Einen Listener registrieren

Fügen Sie den Handler zu window hinzu: window.addEventListener("storage", handleStorage). Der Listener wird nur in anderen Tabs oder Fenstern derselben Origin ausgelöst – niemals in dem Tab, der die Änderung selbst vorgenommen hat und daher bereits über die Aktualisierung Bescheid weiß.

window.addEventListener("storage", (e) => {
  console.log("key:", e.key, "new:", e.newValue);
});

Eigenschaften von StorageEvent

Das Ereignis enthält key (den geänderten Schlüssel), oldValue und newValue (Zeichenfolgen oder null), url (die Seite, die die Änderung ausgelöst hat) sowie storageArea (das Storage-Objekt – localStorage oder sessionStorage).

clear() setzt key auf null

Wenn ein anderer Tab localStorage.clear() aufruft, wird das Storage-Ereignis einmal mit key === null ausgelöst; sowohl oldValue als auch newValue sind dann null. Erkennen Sie dieses Muster, um das vollständige Löschen getrennt von Aktualisierungen einzelner Schlüssel zu behandeln.

Verhalten von removeItem

Ein Aufruf von removeItem löst das Ereignis mit newValue === null aus, während oldValue die vorherige Zeichenfolge enthält. Unterscheiden Sie „Schlüssel gelöscht“ von „Schlüssel auf die Zeichenfolge null gesetzt“, indem Sie prüfen, ob newValue strikt null und nicht die Zeichenfolge "null" ist.

Einschränkung im selben Tab

Das Ereignis wird niemals in dem Tab ausgelöst, der die Änderung geschrieben hat. Um auf eigene Schreibvorgänge zu reagieren, lösen Sie nach setItem ein benutzerdefiniertes Ereignis aus oder kapseln Sie setItem in einer Hilfsfunktion, die sowohl die Storage API als auch Ihren Ereignisbus innerhalb der Anwendung aufruft.

function setItem(key, val) {
  localStorage.setItem(key, val);
  window.dispatchEvent(new CustomEvent("local-storage", { detail: { key, val } }));
}

Abmeldung über mehrere Tabs

Setzen Sie bei der Abmeldung eines Benutzers einen Schlüssel wie auth:logout mit einem Zeitstempel. Andere Tabs achten im Storage-Ereignis auf diesen Schlüssel und löschen sofort ihren eigenen Sitzungsstatus; anschließend leiten sie zur Anmeldeseite weiter, ohne dass der Benutzer erneut klicken muss.

Synchronisierung von Design und Einstellungen

Wenn der Benutzer in einem Tab das Design umschaltet, schreiben Sie theme in localStorage. Der Storage-Handler in jedem anderen Tab liest den neuen Wert und wendet document.documentElement.dataset.theme an – die Änderung erscheint sofort in allen geöffneten Tabs.

Nach Schlüssel filtern

Ein Handler kann viele Funktionen bedienen, indem er anhand von e.key verzweigt. Eine switch-Anweisung hält den Dispatcher übersichtlich: Jeder case-Zweig behandelt einen Storage-Schlüssel und ignoriert nicht relevante Änderungen, die andere Funktionen in denselben Storage schreiben.

sessionStorage funktioniert nicht tabübergreifend

sessionStorage ist an einen Tab gebunden – seine Schreibvorgänge lösen niemals Storage-Ereignisse in anderen Tabs aus, da diese über eigene, unabhängige sessionStorage-Speicher verfügen. Verwenden Sie localStorage, wenn eine Signalisierung über mehrere Tabs erforderlich ist, auch wenn Sie den Schlüssel anschließend sofort wieder entfernen.

Alternative: BroadcastChannel

Für umfangreichere Nachrichten zwischen Tabs sendet die BroadcastChannel API strukturierte Daten, ohne den Speicher zu verwenden: new BroadcastChannel("app").postMessage({ type: "logout" }). Verwenden Sie BroadcastChannel für kurzlebige Signale und Storage-Ereignisse für Status, der zusätzlich persistent bleiben muss.

Wissenscheck

Welche Tabs empfangen das Storage-Ereignis, wenn Tab A localStorage.setItem("theme", "dark") aufruft?

Zusammenfassung

Das Storage-Ereignis liefert tabübergreifende Benachrichtigungen, sobald localStorage in einem anderen Tab geändert wird, und enthält key, oldValue, newValue und storageArea. Im schreibenden Tab wird es nicht ausgelöst. Kombinieren Sie es daher mit einem benutzerdefinierten Ereignis, um eine vollständige lokale und entfernte Weiterleitung zu erreichen. Verwenden Sie es für die Weitergabe von Abmeldungen, die Synchronisierung des Designs und jeden Status, der über mehrere Browserfenster hinweg konsistent bleiben soll.

Häufig gestellte Fragen

Ist die Lektion „Auf Storage-Ereignisse reagieren“ kostenlos?

Ja — der vollständige Text von „Auf Storage-Ereignisse reagieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des HTML Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der HTML Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Auf Storage-Ereignisse reagieren“?

Reagieren Sie mit dem storage-Ereignis auf speicherbezogene Änderungen in anderen Tabs Du übst HTML Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um HTML Academy zu starten?

Keine Vorkenntnisse erforderlich. HTML Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Auf Storage-Ereignisse reagieren“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser HTML Academy-Lektion Code schreiben und ausführen?

Ja. Jede HTML Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. localStorage gegenüber sessionStorage
  2. Elemente auslesen, setzen und entfernen
  3. Auf Storage-Ereignisse reagieren
  4. Sicherheit: Was Sie niemals im Speicher ablegen sollten
← Zurück zu HTML Academy