HTML Academy · Lección

Escuchar eventos de almacenamiento

Reaccione a cambios de almacenamiento entre pestañas con el evento storage

Lección 3 de 413 pasos

Escuchar eventos de almacenamiento es una lección gratuita de HTML Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de HTML Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de HTML Academy incluye 4 lecciones en total.

Comunicación entre pestañas

Web Storage emite un evento storage en todas las demás pestañas del mismo origen cada vez que cambia localStorage. Es la forma más sencilla de mantener sincronizadas varias pestañas abiertas de la misma aplicación, por ejemplo, para propagar un cierre de sesión o un cambio de tema.

Registro de un listener

Asocie el controlador a window: window.addEventListener("storage", handleStorage). El listener solo se activa en otras pestañas o ventanas del mismo origen, nunca en la pestaña que realizó el cambio, que ya conoce la actualización.

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

Propiedades de StorageEvent

El evento contiene key (la clave que cambió), oldValue y newValue (cadenas o null), url (la página que desencadenó el cambio) y storageArea (el objeto Storage: localStorage o sessionStorage).

clear() establece key en null

Cuando otra pestaña llama a localStorage.clear(), el evento de almacenamiento se emite una vez con key === null y con oldValue y newValue en null. Detecte este patrón para gestionar un borrado masivo por separado de las actualizaciones de una sola clave.

Comportamiento de removeItem

Una llamada a removeItem emite el evento con newValue === null y oldValue con la cadena anterior. Distinga entre «clave eliminada» y «clave establecida en la cadena null» comprobando que newValue sea estrictamente null y no la cadena "null".

Limitación en la misma pestaña

El evento nunca se emite en la pestaña que escribió el cambio. Para reaccionar a sus propias escrituras, emita un evento personalizado después de setItem o envuelva setItem en un helper que llame tanto a la API de almacenamiento como al bus de eventos de la aplicación.

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

Cierre de sesión entre pestañas

Establezca una clave como auth:logout con una marca de tiempo cuando un usuario cierre sesión. Las demás pestañas escuchan esa clave en el evento de almacenamiento y borran inmediatamente su propio estado de sesión, redirigiendo a la página de inicio de sesión sin que el usuario tenga que volver a hacer clic.

Sincronización de temas y preferencias

Cuando el usuario cambia el tema en una pestaña, escriba theme en localStorage. El controlador de almacenamiento de cada una de las demás pestañas lee el nuevo valor y aplica document.documentElement.dataset.theme; el cambio aparece al instante en todas las pestañas abiertas.

Filtrado por clave

Un único controlador puede atender muchas funcionalidades comprobando e.key. Una instrucción switch mantiene legible el distribuidor: cada case gestiona una clave de almacenamiento e ignora los cambios no relacionados que otras funcionalidades escriban en el mismo objeto Storage.

sessionStorage no funciona entre pestañas

sessionStorage es específico de cada pestaña; sus escrituras nunca emiten eventos de almacenamiento en otras pestañas porque cada una tiene su propio sessionStorage independiente. Use localStorage cuando necesite señalización entre pestañas, aunque elimine la clave inmediatamente después.

Alternativa con BroadcastChannel

Para una mensajería más completa entre pestañas, la API BroadcastChannel envía datos estructurados sin tocar el almacenamiento: new BroadcastChannel("app").postMessage({ type: "logout" }). Use BroadcastChannel para señales transitorias y los eventos de almacenamiento para el estado que también deba persistir.

Comprobación de conocimientos

Si la pestaña A llama a localStorage.setItem("theme", "dark"), ¿qué pestañas reciben el evento de almacenamiento?

Resumen

El evento de almacenamiento proporciona notificaciones entre pestañas cada vez que localStorage cambia en otra pestaña, e incluye key, oldValue, newValue y storageArea. No se emite en la pestaña que escribe, por lo que debe combinarlo con un evento personalizado para distribuir tanto los cambios locales como los remotos. Úselo para propagar cierres de sesión, sincronizar temas y mantener coherente cualquier estado entre ventanas del navegador.

Gratis para empezar

Aprende HTML con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
40
Lecciones
159

Preguntas frecuentes

¿La lección «Escuchar eventos de almacenamiento» es gratis?

Sí — el texto completo de «Escuchar eventos de almacenamiento» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de HTML Academy, actualiza a CoddyKit PRO. El curso de HTML Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Escuchar eventos de almacenamiento»?

Reaccione a cambios de almacenamiento entre pestañas con el evento storage Practicas HTML Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar HTML Academy?

No se requiere experiencia previa. HTML Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Escuchar eventos de almacenamiento»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de HTML Academy?

Sí. Cada lección de HTML Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. localStorage frente a sessionStorage
  2. Obtener, establecer y eliminar elementos
  3. Escuchar eventos de almacenamiento
  4. Seguridad: qué no debe almacenar nunca
← Volver a HTML Academy