> Как организовать общение между двумя вкладками одного приложения в браузере? (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: RecruitTech, HolyWeb

Стек: JavaScript

> Пример ответа

Для организации общения между двумя вкладками одного приложения в браузере можно использовать несколько подходов. Наиболее распространённые:

  1. BroadcastChannel API - современный и простой способ. Создаёте канал с одинаковым именем в обеих вкладках, отправляете сообщения через postMessage, а на другой стороне слушаете событие message. Пример:

    JAVASCRIPT
    // Вкладка 1
    const channel = new BroadcastChannel('app_channel');
    channel.postMessage({ type: 'UPDATE', data: 'hello' });
    // Вкладка 2
    const channel = new BroadcastChannel('app_channel');
    channel.onmessage = (event) => {
    console.log(event.data);
    };
  2. localStorage - через событие storage. Когда одна вкладка изменяет данные в localStorage, другие вкладки (в том же origin) получают событие. Недостаток - данные остаются в хранилище, нужно чистить вручную.

    JAVASCRIPT
    // Вкладка 1
    localStorage.setItem('message', JSON.stringify({ text: 'hello' }));
    // Вкладка 2
    window.addEventListener('storage', (event) => {
    if (event.key === 'message') {
    console.log(JSON.parse(event.newValue));
    }
    });
  3. SharedWorker - более сложный, но мощный вариант. Создаёте воркер, который разделяется между вкладками, и через него передаёте сообщения. Подходит для сложной синхронизации состояния.

Рекомендую BroadcastChannel как самый простой и надёжный для большинства сценариев. Учтите, что он не поддерживается в старых браузерах (IE11), тогда используйте localStorage как fallback.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью