javascript - 如何使用 JavaScript 查看已打开的广播 channel ?

标签 javascript broadcast-channel

HTML5 BroadcastChannel API是在选项卡/窗口之间发送数据的绝佳解决方案。
他们是用 new BroadcastChannel(name) 打开的并通过拨打 .close() 关闭功能。
但是,它没有提供有关如何查看现有打开的广播 channel 的说明。如果我正在动态创建 BroadcastChannels(不是使用固定的 channel 名称),查看当前打开的 BroadcastChannels 非常有用。
一个 search on Google ("view existing broadcast channels javascript")查看前三个结果( 123 )都没有提供有关如何查看所有打开的广播 channel 的指示。
我试过查看 BroadcastChannel interface但它不提供任何 .listOpenedChannels()函数或任何类似的东西。
如何查看现有打开的广播 channel ?

最佳答案

一个 BroadcastChannel对象存储为 window 的属性,因此您可以遍历所有窗口属性并查找对象类型“BroadcastChannel”。
MDN 有一个关于此的部分:

  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof

  • 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);
    

    关于javascript - 如何使用 JavaScript 查看已打开的广播 channel ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67611301/

    相关文章:

    javascript - 添加 jquery 键盘后,jquery 按钮单击事件不起作用

    javascript - 选项卡或窗口之间的通信

    php - 用户在 Laravel 中使用 Redis 加入广播 channel 后,在后端获取事件

    Angular:绑定(bind)到服务的可观察属性 ->值不更新

    javascript - Twitterbot使用node和javascript不断循环

    javascript - 当 Google 表格列更新时向 Slack channel 发送消息(Google 脚本)

    javascript - 无法使用 chrome 43 beta 设置 xhr.responseType

    javascript - 焦点和一个元素应该反射(reflect)到 CSS 中的另一个元素

    javascript - chrome 开发人员工具控制台中的 BroadcastChannel 测试不起作用