BroadcastChannel.onmessage не работает в firefox

Мне нужно поделиться некоторой информацией между двумя вкладками одного и того же браузера, указывающими на один и тот же сайт. Я использую обработчик событий BroadcastChannel.onmessage, как подробно описано здесь:https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel/onmessage

В коде javascript вкладки отправителя я определил:

var bc = new BroadcastChannel('my_bc_channel');
bc.postMessage(i); //where i is simply the line number i want to share

И во вкладке получения:

var bc = new BroadcastChannel('my_bc_channel');
//then use this to receive the incoming messages:
bc.onmessage = function (ev) {
    last_line = ev.data
}

Мой код отлично работает в Chrome, но ничего не делает в Firefox (последняя версия 70 только что установлена ​​под Windows). В диаграмме совместимости в приведенной выше ссылке говорится, что он должен работать с Firefox версии 38.

Дело в том, что я не знаю, как это отладить. У меня нет сообщений об ошибках в консоли. Я не знаю, код отправителя ничего не отправляет. Но очевидно, что код приема не запускается, поэтому я предполагаю, что событие.onmessage не обнаружено. Где я могу увидеть в консоли javascript, если сообщение отправлено?

2 ответа

Решение

Я открыл отчет об ошибке:https://bugzilla.mozilla.org/show_bug.cgi?id=1600512

Кажется, BroadcastChannel.onmessage не работает должным образом, когда вы размещаете файлы локально на жестком диске, как это было в моем примере выше. В противном случае работает.

Может случиться так, что канал "на вкладке приема" имеет обработчик сообщений, установленный только после того, как другая вкладка передала сообщение, и сообщение потеряно.

Вы можете захотеть, чтобы на вкладке "Отправка" также был установлен обработчик сообщений, и подождать, пока другая вкладка не передаст сообщение, которое она готова принять, и только затем начать рассылку.

Другие вопросы по тегам