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 не работает должным образом, когда вы размещаете файлы локально на жестком диске, как это было в моем примере выше. В противном случае работает.
Может случиться так, что канал "на вкладке приема" имеет обработчик сообщений, установленный только после того, как другая вкладка передала сообщение, и сообщение потеряно.
Вы можете захотеть, чтобы на вкладке "Отправка" также был установлен обработчик сообщений, и подождать, пока другая вкладка не передаст сообщение, которое она готова принять, и только затем начать рассылку.