sessionStorage es similar a localStorage, pero los datos solo persisten durante la sesión de la pestaña del navegador. Cuando cierras la pestaña o ventana, los datos se eliminan automáticamente.
Para datos que no deben persistir después de cerrar:
// Token de autenticación temporalfunction iniciarSesion(token) { sessionStorage.setItem('sessionToken', token);}function obtenerToken() { return sessionStorage.getItem('sessionToken');}function cerrarSesion() { sessionStorage.removeItem('sessionToken'); // Redirigir al login}// El token se borra automáticamente al cerrar la pestaña
Carrito de Compras Temporal
function agregarAlCarrito(producto) { const carrito = obtenerCarrito(); carrito.push(producto); sessionStorage.setItem('carrito', JSON.stringify(carrito));}function obtenerCarrito() { const carrito = sessionStorage.getItem('carrito'); return carrito ? JSON.parse(carrito) : [];}function vaciarCarrito() { sessionStorage.removeItem('carrito');}// El carrito se borra al cerrar la pestaña
// En pestaña 1:sessionStorage.setItem('mensaje', 'Hola desde pestaña 1');// En pestaña 2 (mismo dominio):console.log(sessionStorage.getItem('mensaje')); // null// Cada pestaña tiene su propio sessionStorage
// En pestaña original:sessionStorage.setItem('contador', '5');// Al duplicar la pestaña (Ctrl+Shift+T o clic derecho > Duplicar):// La nueva pestaña COPIA el sessionStorage de la originalconsole.log(sessionStorage.getItem('contador')); // "5"// Pero son independientes después:sessionStorage.setItem('contador', '10'); // Solo en la nueva pestaña
Al duplicar una pestaña, el sessionStorage se copia, pero luego las pestañas son independientes.
// GuardarlocalStorage.setItem('tema', 'oscuro');// Leerconst tema = localStorage.getItem('tema');// ✅ Persiste al cerrar el navegador// ✅ Compartido entre pestañas// ✅ Persiste indefinidamente
Usa para:
Preferencias del usuario
Datos que deben persistir
Configuraciones de la aplicación
// GuardarsessionStorage.setItem('paso', '2');// Leerconst paso = sessionStorage.getItem('paso');// ❌ Se borra al cerrar la pestaña// ❌ NO compartido entre pestañas// ✅ Persiste en recargas
El evento storage NO se dispara para sessionStorage en otras pestañas (porque cada pestaña tiene su propio almacenamiento):
// Esto solo funciona con localStorage entre pestañaswindow.addEventListener('storage', (e) => { console.log('Storage cambió:', e.key, e.newValue); // NO se dispara para sessionStorage});
// ✅ Bien: Datos que no deben persistirsessionStorage.setItem('formularioTemp', JSON.stringify(datos));// ❌ Mal: Preferencias del usuario (usa localStorage)sessionStorage.setItem('tema', 'oscuro');
2
Limpia datos cuando ya no los necesites
function enviarFormulario(datos) { // Enviar datos al servidor fetch('/api/submit', { method: 'POST', body: JSON.stringify(datos) }) .then(() => { // Limpiar sessionStorage después de enviar sessionStorage.removeItem('formularioDatos'); sessionStorage.removeItem('formularioPaso'); });}
3
Combina con localStorage cuando sea apropiado
// Guardar token de sesión temporalmentesessionStorage.setItem('sessionToken', token);// Pero guardar preferencias permanentementelocalStorage.setItem('preferencias', JSON.stringify(prefs));