В случаях когда у нас открыто две вкладки одного и того же сайта, нам важно чтобы был обмен данными. Или бывает нужно отслеживать состояние вкладок для применения какой-то логики.
Local Storage:
Сохранение темы интерфейса (светлая/темная) в одной вкладке, а другая вкладка читает эту настройку, чтобы применить ту же тему.
Если мы поменяем тему в одной вкладке то она поменяется и в другой
localStorage.setItem('theme', 'dark'); Broadcast Channel API:
Оповещение всех вкладок о событиях, например, о выходе пользователя из системы.
Отправка сообщения 'logout' через канал и все вкладки, подписанные на этот канал, получают уведомление.
const channel = new BroadcastChannel('user_channel'); channel.postMessage('logout'); Window.postMessage():
Безопасный обмен данными между вкладками.
Вкладка отправляет сообщение другой вкладке, которая принимает и обрабатывает это сообщение.
window.opener.postMessage('Hello', '*'); События фокуса и блюра:
Отслеживание активности вкладок для управления контентом.
Пауза видео при потере фокуса вкладкой и возобновление воспроизведения при возврате фокуса
window.addEventListener('blur', pauseVideo);
window.addEventListener('focus', playVideo); Visibility API:
Управление активностью вкладки в зависимости от ее видимости.
Приостановка обновлений на вкладке, когда она не видна
document.addEventListener('visibilitychange', handleVisibilityChange); Shared Worker:
Совместное использование ресурсов и синхронизация действий между вкладками.
Обмен данными о новых сообщениях в чате через общего воркера
new SharedWorker('worker.js'); #обучающийПост #JavaScript #browser #event