HTML Academy · Les

Luisteren naar storage-events

Reageer op opslagwijzigingen tussen tabbladen met het storage-event

Les 3 van 413 stappen

Luisteren naar storage-events is een gratis HTML Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject HTML Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus HTML Academy bevat in totaal 4 lessen.

Communicatie tussen tabbladen

Web Storage activeert een storage-gebeurtenis op elk ander tabblad met dezelfde herkomst wanneer localStorage verandert. Dit is de eenvoudigste manier om meerdere geopende tabbladen van dezelfde toepassing gesynchroniseerd te houden — bijvoorbeeld om een afmelding of een themawijziging door te geven.

Een listener registreren

Koppel de handler aan window: window.addEventListener("storage", handleStorage). De listener wordt alleen geactiveerd in andere tabbladen of vensters van dezelfde herkomst — nooit in het tabblad dat de wijziging zelf heeft uitgevoerd, omdat dat al van de update op de hoogte is.

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

Eigenschappen van StorageEvent

De gebeurtenis bevat key (de gewijzigde sleutel), oldValue en newValue (tekenreeksen of null), url (de pagina die de wijziging heeft geactiveerd) en storageArea (het Storage-object — localStorage of sessionStorage).

clear() zet key op null

Wanneer een ander tabblad localStorage.clear() aanroept, wordt de opslaggebeurtenis één keer geactiveerd met key === null en zijn zowel oldValue als newValue null. Herken dit patroon om het volledig wissen afzonderlijk van updates van één sleutel af te handelen.

Gedrag van removeItem

Bij een aanroep van removeItem wordt de gebeurtenis geactiveerd met newValue === null en bevat oldValue de vorige tekenreeks. Maak onderscheid tussen "sleutel verwijderd" en "sleutel ingesteld op de tekenreeks null" door te controleren of newValue strikt null is en niet de tekenreeks "null".

Beperking binnen hetzelfde tabblad

De gebeurtenis wordt nooit geactiveerd in het tabblad dat de wijziging heeft geschreven. Als je op je eigen schrijfbewerkingen wilt reageren, activeer je na setItem een aangepaste gebeurtenis of wikkel je setItem in een hulpfunctie die zowel de opslag-API als je gebeurtenisbus in de toepassing aanroept.

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

Afmelden tussen tabbladen

Stel een sleutel zoals auth:logout met een tijdstempel in wanneer een gebruiker zich afmeldt. Andere tabbladen luisteren in de opslaggebeurtenis naar die sleutel en wissen onmiddellijk hun eigen sessiestatus, waarna ze naar de aanmeldpagina worden doorgestuurd zonder dat de gebruiker opnieuw hoeft te klikken.

Synchronisatie van thema en voorkeuren

Wanneer de gebruiker in één tabblad het thema omschakelt, schrijf je theme naar localStorage. De gebeurtenisafhandelaar in elk ander tabblad leest de nieuwe waarde en past document.documentElement.dataset.theme toe — de wijziging verschijnt onmiddellijk in alle geopende tabbladen.

Filteren op sleutel

Eén handler kan meerdere functies bedienen door op basis van e.key verschillende paden te volgen. Een switch-instructie houdt de verzendfunctie overzichtelijk: elk case-blok verwerkt één opslagsleutel en negeert niet-gerelateerde wijzigingen die andere functies naar dezelfde Storage schrijven.

sessionStorage gaat niet over tabbladen heen

sessionStorage is per tabblad — schrijfbewerkingen ervan activeren nooit opslaggebeurtenissen in andere tabbladen, omdat die hun eigen onafhankelijke sessionStorage hebben. Gebruik localStorage wanneer signalering tussen tabbladen nodig is, zelfs als je de sleutel direct daarna weer verwijdert.

Alternatief: BroadcastChannel

Voor uitgebreidere berichten tussen tabbladen verstuurt de BroadcastChannel API gestructureerde gegevens zonder de opslag aan te raken: new BroadcastChannel("app").postMessage({ type: "logout" }). Gebruik BroadcastChannel voor tijdelijke signalen en opslaggebeurtenissen voor status die ook moet blijven bestaan.

Kennistoets

Als tabblad A localStorage.setItem("theme", "dark") aanroept, welke tabbladen ontvangen dan de opslaggebeurtenis?

Samenvatting

De opslaggebeurtenis levert meldingen tussen tabbladen wanneer localStorage in een ander tabblad verandert, met key, oldValue, newValue en storageArea. De gebeurtenis wordt niet geactiveerd in het tabblad dat schrijft, dus combineer deze met een aangepaste gebeurtenis voor volledige lokale en externe afhandeling. Gebruik dit voor het doorgeven van afmeldingen, het synchroniseren van thema's en elke status die consistent moet blijven tussen browservensters.

Gratis beginnen

Leer HTML met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
40
Lessen
159

Veelgestelde vragen

Is de les “Luisteren naar storage-events” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad HTML Academy, waaronder “Luisteren naar storage-events”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus HTML Academy bevat in totaal 4 lessen.

Wat leer ik in “Luisteren naar storage-events”?

Reageer op opslagwijzigingen tussen tabbladen met het storage-event Je oefent met HTML Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met HTML Academy te beginnen?

Ervaring vooraf is niet nodig. HTML Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Luisteren naar storage-events”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over HTML Academy?

Ja. Elke les over HTML Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. localStorage versus sessionStorage
  2. Items ophalen instellen en verwijderen
  3. Luisteren naar storage-events
  4. Beveiliging: wat u nooit in opslag opslaat
← Terug naar HTML Academy