js实现浏览器不同页签之间通信

一. 使用BroadcastChannel

复制代码
const sendMsg = new BroadcastChannel('logout_channel')
sendMsg.postMessage('清除缓存')
onMsg.onmessage = async (event) => {
   console.log('event清除缓存', event.data)
}

二. 使用SharedWorker

1.创建一个SharedWorker实例,并在其中编写处理消息的代码。

复制代码
// shared-worker.js
onconnect = function(e) {
  var port = e.ports[0];
  
  port.onmessage = function(e) {
    var message = e.data;
    // 在这里处理接收到的消息
  };
  
  port.start();
};
  1. 在多个窗口中分别创建SharedWorker的端口,并发送消息。

    // window1.js
    var worker = new SharedWorker('shared-worker.js');
    var port = worker.port;

    port.onmessage = function(e) {
    var message = e.data;
    // 在这里处理接收到的消息
    };

    port.postMessage('Hello from window1!');

    // window2.js
    var worker = new SharedWorker('shared-worker.js');
    var port = worker.port;

    port.onmessage = function(e) {
    var message = e.data;
    // 在这里处理接收到的消息
    };

    port.postMessage('Hello from window2!');

  2. 在SharedWorker中处理接收到的消息,并向所有连接的窗口发送消息。

    // shared-worker.js
    onconnect = function(e) {
    var port = e.ports[0];

    port.onmessage = function(e) {
    var message = e.data;
    // 在这里处理接收到的消息

    复制代码
     // 向所有连接的窗口发送消息
     e.source.postMessage('Hello from SharedWorker!');

    };

    port.start();
    };

相关推荐
程序员黑豆2 分钟前
AI全栈开发之Java:什么是JDK
前端·后端·ai编程
To_OC2 分钟前
万字解析《JS语言精粹》之第四章:函数15大核心精髓(JS灵魂核心)
前端·javascript·代码规范
宋拾壹5 分钟前
同时添加多个类目
android·开发语言·javascript
IT知识分享10 分钟前
从零开发在线简繁转换工具:OpenCC 实战、避坑经验与方案选型
javascript·python
mqcode12 分钟前
Vue3 + Element Plus + Vite 企业级后台框架搭建全流程
前端
SL-staff14 分钟前
Web 白板技术架构深度解析:从渲染到协作的选型哲学
前端·架构
川冰ICE17 分钟前
JavaScript实战④|天气查询应用,调用API与异步处理
javascript·css·css3
微扬嘴角17 分钟前
react篇4--setState、LazyLoad和Hooks
前端·javascript·react.js
凡人叶枫28 分钟前
Effective C++ 条款04:确定对象被使用前已先被初始化
java·linux·开发语言·c++·嵌入式开发
杨梦馨29 分钟前
万级数据表格卡死?Web Worker 一招搞定
前端·javascript·vue.js