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>

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

相关推荐
风花一世月11 分钟前
🏮 我把三坊七巷做成了能飞的 3D 地图(901 个真实建筑轮廓、20 处景点,在线直接玩)
前端
特立独行的猫A13 分钟前
用仓颉语言写一个串口调试助手:cj-tauri 实战
前端
小凯在掘金14 分钟前
Shadow DOM 和 Virtual DOM ?别再傻傻分不清
前端·html
郑州光合科技余经理14 分钟前
本地生活平台搭建:跨业态用户标识怎么贯通
java·开发语言·前端·后端·uni-app·php·ai编程
数据掘金15 分钟前
埋点事件命名升级时老数据怎么办
前端
对空六课15 分钟前
Vue 组件曝光埋点为什么会重复触发?去重方案与实现思路
服务器·前端·算法·数据分析
isha18 分钟前
Univer拆解——从类与方法的视角分析
前端·javascript
羲云19 分钟前
不想再让用户手写 Markdown:零依赖的所见即所得编辑器最新版发布 V0.2.0
前端
deli00721 分钟前
限流算法到底怎么选?令牌桶 vs 漏桶 vs 滑动窗口 3 种同屏实测
前端
陈前端21 分钟前
AI 猜错了接口返回格式之后,我开始怀疑喂给它的上下文
前端