搜尋 Mozilla 技術支援網站

防止技術支援詐騙。我們絕對不會要求您撥打電話或發送簡訊,或是提供個人資訊。請用「回報濫用」功能回報可疑的行為。

Learn More

BroadcastChannel.onmessage not working in firefox

  • 3 回覆
  • 1 有這個問題
  • 134 次檢視
  • 最近回覆由 Hugues

more options

I need to share some information between 2 tabs of the same browser pointing at the same site. I'm using the BroadcastChannel.onmessage event handler as detailed here: https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel/onmessage

In the sender tab javascript code I defined:

var bc = new BroadcastChannel('my_bc_channel');

bc.postMessage(i); //where i is simply the line number i want to share

And in the receiving tab:

var bc = new BroadcastChannel('my_bc_channel');

//then use this to receive the incoming messages:

bc.onmessage = function (ev) {

   last_line = ev.data

}

My code works fine in Chrome, but it does not do anything in Firefox (latest version 70 freshly installed under windows). The compatibility chart in the link I gave above says it should be working from Firefox version 38.

The thing is, I'm not sure how to debug this. I don't have any error messages in the console. I don't know if it's the sender code that does not send anything. But clearly the receiving code is not triggered so I guess the .onmessage event is not detected. Where can I see in the javascript console if the message is sent ?

I need to share some information between 2 tabs of the same browser pointing at the same site. I'm using the BroadcastChannel.onmessage event handler as detailed here: https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel/onmessage In the sender tab javascript code I defined: var bc = new BroadcastChannel('my_bc_channel'); bc.postMessage(i); //where i is simply the line number i want to share And in the receiving tab: var bc = new BroadcastChannel('my_bc_channel'); //then use this to receive the incoming messages: bc.onmessage = function (ev) { last_line = ev.data } My code works fine in Chrome, but it does not do anything in Firefox (latest version 70 freshly installed under windows). The compatibility chart in the link I gave above says it should be working from Firefox version 38. The thing is, I'm not sure how to debug this. I don't have any error messages in the console. I don't know if it's the sender code that does not send anything. But clearly the receiving code is not triggered so I guess the .onmessage event is not detected. Where can I see in the javascript console if the message is sent ?

由 Hugues 於 修改

被選擇的解決方法

I opened a bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=1600512

Seems BroadcastChannel.onmessage does not work properly when you host your files locally on your hard drive.

從原來的回覆中察看解決方案 👍 0

所有回覆 (3)

more options

If the bug 1356546 mentioned didn't

resolve the issue then file a new firefox bug.

Otherwise you can try to split your

data up as was mentioned in comments, 

that wouldn't reduce the overall time,

but it might reduce the affect on UX,
or just don't support Firefox until they
fix their webextensions bugs.
more options

After reading bug report 1356546, I changed my code to send only 1 time the number 700 a few seconds after starting my code. No change. The code goes through without any error message but I receive nothing on the receiving tab.

Before I file a bug report, is there a way in the console of the sending tab to see the data that is being sent with bc.postMessage(i) ?

由 Hugues 於 修改

more options

選擇的解決方法

I opened a bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=1600512

Seems BroadcastChannel.onmessage does not work properly when you host your files locally on your hard drive.