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 分钟前
安装EnsDb.Hsapiens.v86
java·服务器·前端
报错小能手7 分钟前
Swift EventBus讲解
开发语言·ios·swift
金玉满堂@bj7 分钟前
playwright使用教程总结
前端
aq55356007 分钟前
GitSubmodule深度避坑指南
java·开发语言·php
止语Lab11 分钟前
Go 的测试框架不想让你 TDD
开发语言·golang·tdd
yaoxin52112314 分钟前
391. Java 文件操作基础 - 方法链式调用
java·开发语言·python
t***54426 分钟前
如何在 Dev-C++ 中配置 Clang 编译器集
开发语言·c++
小碗羊肉27 分钟前
【从零开始学Java | 第四十一篇】深入多线程
java·开发语言
scheduleTTe29 分钟前
Nginx
服务器·前端·nginx
techdashen38 分钟前
不开端口,不配 DNS,用树莓派在家搭一个公网可访问的 Web 服务
前端·网络·智能路由器