Windows 10 reached EOS (end of support) on October 14, 2025. For more information, see this article.

Tìm kiếm hỗ trợ

Tránh các lừa đảo về hỗ trợ. Chúng tôi sẽ không bao giờ yêu cầu bạn gọi hoặc nhắn tin đến số điện thoại hoặc chia sẻ thông tin cá nhân. Vui lòng báo cáo hoạt động đáng ngờ bằng cách sử dụng tùy chọn "Báo cáo lạm dụng".

Tìm hiểu thêm

BroadcastChannel.onmessage not working in firefox

  • 3 trả lời
  • 1 gặp vấn đề này
  • 92 lượt xem
  • Trả lời mới nhất được viết bởi Hugues

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 ?

Được chỉnh sửa bởi Hugues vào

Giải pháp được chọn

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.

Đọc câu trả lời này trong ngữ cảnh 👍 0

Tất cả các câu trả lời (3)

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.

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) ?

Được chỉnh sửa bởi Hugues vào

Giải pháp được chọn

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.