首页 > 解决方案 > 如何使用 JavaScript 查看现有打开的广播频道?

问题描述

HTML5 BroadcastChannel API是在选项卡/窗口之间发送数据的绝佳解决方案。

它们通过调用函数打开new BroadcastChannel(name)和关闭。.close()

但是,它没有说明如何查看现有打开的广播频道。如果我动态创建 BroadcastChannels(不是使用固定的频道名称),查看当前打开的 BroadcastChannels 非常有用。

Google 上搜索(“查看现有广播频道 javascript”)并查看前三个结果(123)都没有提供有关如何查看所有打开的广播频道的指示。

我试过查看BroadcastChannel界面,但它没有提供任何.listOpenedChannels()功能或任何类似的东西。

如何查看现有打开的广播频道?

标签: javascriptbroadcast-channel

解决方案


BroadcastChannel对象存储为 的属性,window因此您可以遍历所有窗口属性并查找对象类型“BroadcastChannel”。

MDN 有一个关于此的部分:

Real-world usage

这是一个简化版本:

bc1 = new BroadcastChannel('test_channel1');
bc2 = new BroadcastChannel('test_channel2');
bc3 = new BroadcastChannel('test_channel3');

for (p in window) if (Object.prototype.toString.call(window[p]).slice(8,-1)=='BroadcastChannel') console.log(p);

推荐阅读