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();
    };

相关推荐
坐吃山猪1 分钟前
Python20_MCP添加鉴权
开发语言·python
神毓逍遥kang2 分钟前
在nest.js中我想把Java的Sa-Token搬来
前端·后端
Sheldon一蓑烟雨任平生3 分钟前
grid(一文读懂 css 网格布局)
前端·css·grid·grid-template·现代css·css 网格布局
砍材农夫9 分钟前
Hermes 搭建可视化web-dashboard界面
前端·人工智能
Z_Wonderful12 分钟前
Qiankun 子应用数据互通 + 资源共享 完整方案(React+Vue)
前端·vue.js·react.js
你的牧游哥13 分钟前
Electron核心api详解
前端·javascript·electron
gihigo199818 分钟前
分布式发电的配电网有功-无功综合优化 MATLAB 实现
开发语言·分布式·matlab
人工干智能19 分钟前
科普:python的pandas包中的DataFrame就是二维表
开发语言·python·pandas
浪客川20 分钟前
【百例RUST - 006】一文理解所有权和切片
开发语言·后端·rust
Westward-sun.23 分钟前
PyQt5入门实战:从零实现一个表达式输入式计算器(附完整代码)
开发语言·qt