0Pricing
HTML Academy · Leçon

Écouter les événements de stockage

Réagissez aux modifications du stockage entre onglets avec l’événement `storage`.

Écouter les événements de stockage est une leçon HTML Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage HTML Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours HTML Academy comprend 4 leçons au total.

Communication entre onglets

Le stockage Web déclenche un événement de stockage dans chaque autre onglet de même origine chaque fois que localStorage est modifié. Il s’agit de la manière la plus simple de synchroniser plusieurs onglets ouverts de la même application, par exemple pour propager une déconnexion ou un changement de thème.

Enregistrer un écouteur

Attachez le gestionnaire à window : window.addEventListener("storage", handleStorage). L’écouteur ne se déclenche que dans les autres onglets ou fenêtres de la même origine, jamais dans l’onglet qui a effectué la modification et qui connaît déjà la mise à jour.

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

Propriétés de StorageEvent

L’événement contient key (la clé qui a changé), oldValue et newValue (des chaînes ou null), url (la page à l’origine de la modification) et storageArea (l’objet de stockage, localStorage ou sessionStorage).

clear() définit la clé sur null

Lorsqu’un autre onglet appelle localStorage.clear(), l’événement de stockage se déclenche une seule fois avec key === null et avec oldValue et newValue à null. Détectez ce schéma afin de traiter séparément l’effacement global et les mises à jour d’une seule clé.

Fonctionnement de removeItem

Un appel à removeItem déclenche l’événement avec newValue === null et oldValue contenant la chaîne précédente. Distinguez « clé supprimée » de « clé définie sur la chaîne null » en vérifiant que newValue est strictement égal à null, et non à la chaîne "null".

Limitation au même onglet

L’événement ne se déclenche jamais dans l’onglet qui a écrit la modification. Pour réagir à vos propres écritures, déclenchez un événement personnalisé après setItem, ou encapsulez setItem dans une fonction auxiliaire qui appelle à la fois l’interface de stockage et le bus d’événements de votre application.

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

Déconnexion entre onglets

Définissez une clé comme auth:logout avec un horodatage lorsqu’un utilisateur se déconnecte. Les autres onglets écoutent cette clé dans l’événement de stockage, puis effacent immédiatement leur propre état de session et redirigent vers la page de connexion, sans que l’utilisateur ait besoin de cliquer à nouveau.

Synchronisation du thème et des préférences

Lorsque l’utilisateur change de thème dans un onglet, écrivez theme dans localStorage. Le gestionnaire de stockage de chaque autre onglet lit la nouvelle valeur et applique document.documentElement.dataset.theme : le changement apparaît instantanément dans tous les onglets ouverts.

Filtrer par clé

Un seul gestionnaire peut servir plusieurs fonctionnalités en effectuant une sélection selon e.key. Une instruction switch permet de conserver un répartiteur lisible : chaque cas traite une clé de stockage et ignore les modifications sans rapport écrites par les autres fonctionnalités dans le même espace de stockage.

sessionStorage ne se partage pas entre les onglets

sessionStorage est propre à chaque onglet : ses écritures ne déclenchent jamais d’événements de stockage dans les autres onglets, car ceux-ci disposent de leur propre sessionStorage indépendant. Utilisez localStorage lorsqu’une communication entre onglets est nécessaire, même si vous supprimez immédiatement la clé ensuite.

Alternative avec BroadcastChannel

Pour une messagerie plus riche entre onglets, l’interface BroadcastChannel envoie des données structurées sans toucher au stockage : new BroadcastChannel("app").postMessage({ type: "logout" }). Utilisez BroadcastChannel pour les signaux temporaires et les événements de stockage pour l’état qui doit également être conservé.

Vérification des connaissances

Si l’onglet A appelle localStorage.setItem("theme", "dark"), quels onglets reçoivent l’événement de stockage ?

Résumé

L’événement de stockage transmet des notifications entre onglets chaque fois que localStorage est modifié dans un autre onglet, avec key, oldValue, newValue et storageArea. Il ne se déclenche pas dans l’onglet qui écrit : associez-le donc à un événement personnalisé pour distribuer les modifications à la fois localement et à distance. Utilisez-le pour propager les déconnexions, synchroniser les thèmes et maintenir cohérent tout état qui doit rester identique entre les fenêtres du navigateur.

Questions Fréquemment Posées

La leçon « Écouter les événements de stockage » est-elle gratuite ?

Oui — le texte complet de « Écouter les événements de stockage » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours HTML Academy, passe à CoddyKit PRO. Le cours HTML Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Écouter les événements de stockage » ?

Réagissez aux modifications du stockage entre onglets avec l’événement `storage`. Tu pratiques HTML Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer HTML Academy ?

Aucune expérience préalable n'est requise. HTML Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Écouter les événements de stockage » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon HTML Academy ?

Oui. Chaque leçon HTML Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. `localStorage` ou `sessionStorage`
  2. Lire, définir et supprimer des éléments
  3. Écouter les événements de stockage
  4. Sécurité : ce qu’il ne faut jamais stocker
← Retour à HTML Academy