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控制台中在哪里看到?

我打开了一个错误报告: https://bugzilla.mozilla.org/show_bug.cgi?id=1600512

当您在硬盘驱动器上本地托管文件时,似乎BroadcastChannel.onmessage无法正常工作,就像我在上面的示例中所做的那样。否则它工作。

可能是"在接收选项卡中"的通道仅在另一个选项卡广播消息并且消息丢失后才设置了它的 onmessage 处理程序。

您可能希望"发送"选项卡也设置消息处理程序,并等待另一个选项卡广播它已准备好接收的消息,然后才开始广播。

最新更新