Monitorando eventos de armazenamento
Reaja a alterações de armazenamento entre abas com o evento storage.
Monitorando eventos de armazenamento é uma aula grátis de HTML Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de HTML Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de HTML Academy inclui 4 aulas no total.
Comunicação entre abas
O armazenamento da Web dispara um evento de armazenamento em todas as outras abas da mesma origem sempre que o localStorage é alterado. Essa é a maneira mais simples de manter várias abas abertas do mesmo aplicativo sincronizadas — por exemplo, propagando um encerramento de sessão ou uma mudança de tema.
Registrando um ouvinte
Anexe o manipulador a window: window.addEventListener("storage", handleStorage). O ouvinte é disparado somente em outras abas ou janelas da mesma origem — nunca na aba que realizou a alteração, pois ela já sabe da atualização.
window.addEventListener("storage", (e) => {
console.log("key:", e.key, "new:", e.newValue);
});Propriedades de StorageEvent
O evento contém key (a chave que mudou), oldValue e newValue (textos ou null), url (a página que disparou a alteração) e storageArea (o objeto de armazenamento — localStorage ou sessionStorage).
clear() define key como null
Quando outra aba chama localStorage.clear(), o evento de armazenamento é disparado uma vez com key === null e tanto oldValue quanto newValue definidos como null. Detecte esse padrão para tratar uma limpeza em massa separadamente das atualizações de uma única chave.
Comportamento de removeItem
Uma chamada a removeItem dispara o evento com newValue === null e oldValue contendo o texto anterior. Diferencie "chave excluída" de "chave definida como o texto null" verificando se newValue é estritamente null, e não o texto "null".
Limitação na mesma aba
O evento nunca é disparado na aba que gravou a alteração. Para reagir às suas próprias gravações, dispare um evento personalizado após setItem ou envolva setItem em uma função auxiliar que chame tanto a API de armazenamento quanto o barramento de eventos do aplicativo.
function setItem(key, val) {
localStorage.setItem(key, val);
window.dispatchEvent(new CustomEvent("local-storage", { detail: { key, val } }));
}Encerramento de sessão entre abas
Defina uma chave como auth:logout com um registro de data e hora quando o usuário sair. As outras abas escutam essa chave no evento de armazenamento e limpam imediatamente o próprio estado da sessão, redirecionando para a página de login sem que o usuário precise clicar novamente.
Sincronização de tema e preferências
Quando o usuário alternar o tema em uma aba, grave theme no localStorage. O manipulador do evento de armazenamento em cada uma das outras abas lê o novo valor e aplica document.documentElement.dataset.theme — a alteração aparece instantaneamente em todas as abas abertas.
Filtrando por chave
Um único manipulador pode atender a vários recursos verificando e.key. Uma instrução de seleção mantém o despachante legível: cada caso trata uma chave de armazenamento e ignora alterações não relacionadas que outros recursos gravam no mesmo objeto de armazenamento.
sessionStorage não atravessa abas
O sessionStorage é específico de cada aba — suas gravações nunca disparam eventos de armazenamento em outras abas, pois elas têm seu próprio sessionStorage independente. Use localStorage quando for necessária sinalização entre abas, mesmo que você remova imediatamente a chave depois.
Alternativa com BroadcastChannel
Para mensagens mais avançadas entre abas, a API BroadcastChannel envia dados estruturados sem tocar no armazenamento: new BroadcastChannel("app").postMessage({ type: "logout" }). Use BroadcastChannel para sinais temporários e eventos de armazenamento para estados que também precisam persistir.
Verificação de conhecimento
Se a Aba A chamar localStorage.setItem("theme", "dark"), quais abas recebem o evento de armazenamento?
Resumo
O evento de armazenamento fornece notificações entre abas sempre que o localStorage é alterado em outra aba, com key, oldValue, newValue e storageArea. Ele não é disparado na aba que grava, portanto combine-o com um evento personalizado para realizar o despacho local e remoto completo. Use-o para propagar encerramentos de sessão, sincronizar temas e manter consistente qualquer estado que deva permanecer igual entre as janelas do navegador.
Aprenda HTML com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 40
- Aulas
- 159
Perguntas Frequentes
A aula “Monitorando eventos de armazenamento” é grátis?
Sim — o texto completo de “Monitorando eventos de armazenamento” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de HTML Academy, atualize para CoddyKit PRO. O curso de HTML Academy inclui 4 aulas no total.
O que vou aprender em “Monitorando eventos de armazenamento”?
Reaja a alterações de armazenamento entre abas com o evento storage. Você pratica HTML Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar HTML Academy?
Nenhuma experiência prévia é necessária. HTML Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Monitorando eventos de armazenamento”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de HTML Academy?
Sim. Cada aula de HTML Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- localStorage versus sessionStorage
- Obtendo, definindo e removendo itens
- Monitorando eventos de armazenamento
- Segurança: o que nunca armazenar no armazenamento