JavaScript storage event: синхронизация вкладок

Категория: JavaScript · Язык: JavaScript · Обновлено:

Событие storage позволяет вкладке узнать об изменении localStorage, сделанном в другой вкладке того же origin. Это простой способ уведомить соседние вкладки о переключении темы или обновлении некритичного состояния.

Рабочий пример

JavaScript
window.addEventListener('storage', event => {
  if (event.storageArea !== localStorage) return;
  if (event.key === 'theme' && event.newValue) {
    document.documentElement.dataset.theme = event.newValue;
  }
});

// в другой вкладке:
localStorage.setItem('theme', 'dark');

StorageEvent содержит key, oldValue и newValue. Изменение в той же вкладке не вызывает storage event в ней самой.

Частый вопрос

Почему событие не срабатывает в текущей вкладке?

По спецификации оно приходит в другие документы того же origin. Для локального обновления вызовите функцию обновления состояния напрямую.