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

相关推荐
wclass-zhengge22 分钟前
02C#基本结构篇(D1_基本语法)
开发语言·microsoft·c#
hrrrrb23 分钟前
【C语言】数组篇
c语言·开发语言
WHOAMI_老猫25 分钟前
XSS-LABS靶场通关讲解
前端·xss
要加油哦~28 分钟前
前端 | 向后端传数据,判断问题所在的调试过程
前端·javascript·vue.js
中工钱袋2 小时前
Vue 中地址栏参数与 HTTP 请求参数的同步问题
前端·vue.js·http
蜡笔小新..2 小时前
R语言和RStudio安装
开发语言·r语言
ALPH_2 小时前
R语言的基础命令及实例操作
开发语言·数据分析·r语言·perl·r语言-4.2.1
一只月月鸟呀2 小时前
Vue 过滤器 filter(s) 的使用
javascript·vue.js·ecmascript
zzlyx992 小时前
设备管理系统功能与.NET+VUE(IVIEW)技术实现
前端·vue.js·view design
咩咩觉主2 小时前
C# &Unity 唐老狮 No.6 模拟面试题
开发语言·unity·面试·c#·游戏引擎·唐老师