Ascoltare gli eventi di archiviazione
Reagire alle modifiche dell’archiviazione tra schede con l’evento storage
Ascoltare gli eventi di archiviazione è una lezione HTML Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento HTML Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso HTML Academy include 4 lezioni in totale.
Comunicazione tra schede
La Web Storage genera un evento storage in ogni altra scheda della stessa origine ogni volta che localStorage cambia. È il modo più semplice per mantenere sincronizzate più schede aperte della stessa app, ad esempio propagando un logout o il cambio del tema.
Registrare un listener
Colleghi il gestore a window: window.addEventListener("storage", handleStorage). Il listener si attiva solo nelle altre schede o finestre della stessa origine, mai nella scheda che ha eseguito la modifica, perché è già a conoscenza dell'aggiornamento.
window.addEventListener("storage", (e) => {
console.log("key:", e.key, "new:", e.newValue);
});Proprietà di StorageEvent
L'evento contiene key (la chiave modificata), oldValue e newValue (stringhe o null), url (la pagina che ha attivato la modifica) e storageArea (l'oggetto Storage, localStorage o sessionStorage).
clear() imposta key su null
Quando un'altra scheda chiama localStorage.clear(), l'evento storage viene generato una sola volta con key === null e con oldValue e newValue entrambi null. Riconosca questo schema per gestire separatamente la cancellazione completa dagli aggiornamenti di una singola chiave.
Comportamento di removeItem
Una chiamata a removeItem genera l'evento con newValue === null e oldValue contenente la stringa precedente. Distingua tra «chiave eliminata» e «chiave impostata sulla stringa null» verificando che newValue sia strettamente null e non la stringa "null".
Limitazione nella stessa scheda
L'evento non viene mai generato nella scheda che ha scritto la modifica. Per reagire alle proprie scritture, distribuisca un evento personalizzato dopo setItem oppure racchiuda setItem in un helper che chiami sia la Storage API sia l'event bus dell'applicazione.
function setItem(key, val) {
localStorage.setItem(key, val);
window.dispatchEvent(new CustomEvent("local-storage", { detail: { key, val } }));
}Logout tra schede
Quando un utente esegue il logout, imposti una chiave come auth:logout con un timestamp. Le altre schede ascoltano quella chiave nell'evento storage e cancellano immediatamente il proprio stato della sessione, reindirizzando alla pagina di accesso senza che l'utente debba fare nuovamente clic.
Sincronizzazione del tema e delle preferenze
Quando l'utente cambia il tema in una scheda, scriva theme in localStorage. Il gestore storage in ogni altra scheda legge il nuovo valore e applica document.documentElement.dataset.theme: la modifica appare immediatamente in tutte le schede aperte.
Filtrare per chiave
Un solo gestore può servire molte funzionalità, diramandosi in base a e.key. Un'istruzione switch mantiene leggibile il dispatcher: ogni caso gestisce una chiave di storage e ignora le modifiche non pertinenti scritte dalle altre funzionalità nello stesso Storage.
sessionStorage non funziona tra schede
sessionStorage è specifico per scheda: le sue scritture non generano mai eventi storage nelle altre schede, perché ciascuna dispone di un sessionStorage indipendente. Utilizzi localStorage quando è necessaria la segnalazione tra schede, anche se rimuove subito dopo la chiave.
Alternativa con BroadcastChannel
Per una messaggistica tra schede più ricca, la BroadcastChannel API invia dati strutturati senza toccare lo storage: new BroadcastChannel("app").postMessage({ type: "logout" }). Utilizzi BroadcastChannel per i segnali transitori e gli eventi storage per lo stato che deve anche persistere.
Verifica delle conoscenze
Se la scheda A chiama localStorage.setItem("theme", "dark"), quali schede ricevono l'evento storage?
Riepilogo
L'evento storage invia notifiche tra schede ogni volta che localStorage cambia in un'altra scheda, includendo key, oldValue, newValue e storageArea. Non viene generato nella scheda che esegue la scrittura, quindi lo combini con un evento personalizzato per una distribuzione completa, locale e remota. Lo utilizzi per propagare il logout, sincronizzare il tema e mantenere coerente tra le finestre del browser qualsiasi stato che debba restare sincronizzato.
Domande Frequenti
La lezione «Ascoltare gli eventi di archiviazione» è gratuita?
Sì — il testo completo di «Ascoltare gli eventi di archiviazione» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso HTML Academy, passa a CoddyKit PRO. Il corso HTML Academy include 4 lezioni in totale.
Cosa imparerò in «Ascoltare gli eventi di archiviazione»?
Reagire alle modifiche dell’archiviazione tra schede con l’evento storage Eserciti HTML Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare HTML Academy?
Non è richiesta alcuna esperienza precedente. HTML Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Ascoltare gli eventi di archiviazione»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione HTML Academy?
Sì. Ogni lezione HTML Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- localStorage e sessionStorage a confronto
- Ottenere, impostare e rimuovere elementi
- Ascoltare gli eventi di archiviazione
- Sicurezza: cosa non archiviare mai