BroadCast Channel() 浏览器跨标签页通信的实现方式之一

BroadCast Channel

BroadCast Channel 可以帮我们创建一个用于广播的通信频道。当所有页面都监听同一频道的消息时,其中某一个页面通过它发送的消息就会被其他所有页面收到。但是前提是同源页面。

BroadcastChannel() 构造函数用于创建一个 BroadcastChannel 对象,并与底层的通道相关联。

js 复制代码
new BroadcastChannel(channelName)

index.html

html 复制代码
<body>
    <input type="text" name="" id="content">
    <button id="btn">发送数据</button>
    <script>
        const content = document.querySelector("#content");
        const btn = document.querySelector("#btn");

        // 创建一个名字是 load 的 BroadcastChannel 对象
        var BroadcastChanne1 = new BroadcastChannel('load');

        btn.onclick = function () {
            BroadcastChanne1.postMessage({
                value: content.value
            });
        }

    </script>
</body>

index2.html

html 复制代码
<body>
    <script>
        var BroadcastChanne1 = new BroadcastChannel('load');//要接收到数据,BroadcastChannel对象的名字必须相同
        BroadcastChanne1.onmessage = function (e) {
            console.log(e.data);//发送的数据
        };
    </script>
</body>

在上面的代码中,我们在页面一注册了一个名为 loadBroadcastChannel 对象,之后所有的页面也创建同名的 BroadcastChannel 对象,然后就可以通过 postMessageonmessage 方法进行相互通信了。

相关推荐
马优晨几秒前
pom.xml 中 jquery webjars 依赖解释
xml·前端·jquery·jquery webjars·webjars依赖
里欧跑得慢16 分钟前
AI 驱动的 UI 国际化方案自动适配:从单一语言到多语言布局的智能转换
前端·css·flutter·web
DolitD17 分钟前
云流技术深度剖析:单服务器下如何实现3D应用的多实例并发?
java·服务器·前端·3d·云原生·云计算
芦柑46424 分钟前
画布和3D导演台工具:短剧分镜从素材整理到空间预演的完整链路
服务器·前端·数据库
李蚊子38 分钟前
从代理提醒到真实响铃:懒熊闹钟的鸿蒙开发实践
前端·harmonyos
IT_陈寒1 小时前
Redis的Lua脚本居然把我的集群搞崩了!
前端·人工智能·后端
计算机魔术师1 小时前
索尼与华纳起诉Anthropic,指控其大规模盗用版权音乐训练Claude
前端
恋猫de小郭1 小时前
AI 时代,一个优化 Flutter 的重复代码工具 Deslop
android·前端·flutter
穗余1 小时前
Typescript let和var区别
前端·javascript·typescript
晓得迷路了1 小时前
栗子前端技术周刊第 144 期 - Rspack 2.2、pnpm 12、Solid 2.0 RC...
前端·javascript·css