BroadcastChannel:跨标签页通信

server/2024/9/22 22:27:25/

目前浏览器跨标签页通信的方式有很多,比如:websocket、针对LocalStorage使用window.onstorage、window.postmessage。
本文将用BroadcastChannel实现同一域名下两个标签页间消息的收和发

一、全局创建通信通道

const channel = new BroadcastChannel('channel1');

二、发送消息与监听消息

const sendMsg = (type, msg) => {channel.postMessage({type,msg,});
};const listen = (callback) => {channel.addEventListener('message', (e) => {console.log('eee', e);callback(e.data);});
}

三、应用

触发事件

const handleClick = () => {sendMsg('add', { name: '张三', age: 22 });
}

接受消息处理业务逻辑

listen((data) => {console.log('data', data);const { type, msg } = data;if (type === 'add') {const h1 = document.querySelector('h1');h1.append(`姓名:${msg.name}-年龄:${msg.age}`);}
});

演示

使用Live Server启动本地演示项目,两个标签页打开同一个页面,一个发一个收

channel

源码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><script src="./channel.js"></script><script src="./index.js"></script><button onclick="handleClick(event)">发送</button><h1></h1>
</body>
</html>
// channel.jsconst channel = new BroadcastChannel('channel1');const sendMsg = (type, msg) => {channel.postMessage({type,msg,});
};const listen = (callback) => {channel.addEventListener('message', (e) => {console.log('eee', e);callback(e.data);});
}
// index.jslisten((data) => {console.log('data', data);const { type, msg } = data;if (type === 'add') {const h1 = document.querySelector('h1');h1.append(`姓名:${msg.name}----年龄:${msg.age}`);}
});const handleClick = () => {sendMsg('add', { name: '张三', age: 22 });
}

http://www.ppmy.cn/server/39562.html

相关文章

C语言UDP网络编程

目录 1. C语言UDP编程简介 1.1 背景与意义 1.2 UDP协议简介 1.3 C语言在网络编程中的应用 2. UDP网络编程基础 2.1 套接字编程概念 2.2 UDP套接字创建与绑定 2.3 数据发送与接收 2.4 关闭套接字 3. C语言UDP编程实例 3.1 简单聊天室 3.2 文件传输程序 3.3 广播消息…

NLP算法工程师技术栈

NLP算法工程师技术栈全览 随着人工智能和机器学习的迅猛发展&#xff0c;自然语言处理&#xff08;NLP&#xff09;成为了当下最为热门的领域之一。作为NLP算法工程师&#xff0c;掌握一套完整的技术栈对于高效、准确地完成NLP任务至关重要。本文将为你详细介绍NLP算法工程师需…

聊聊测试团队管理

管理测试团队是一个复杂但至关重要的任务&#xff0c;它不仅关乎于保证软件产品的质量&#xff0c;还涉及到团队建设、流程优化、技能提升等多个方面。以下是一些关键策略&#xff0c;可以帮助您有效地管理测试团队&#xff0c;比如“持续培训和技术支持&#xff0c;明确目标&a…

解决在Outlook中预定Teams会议不显示入会链接的问题

今天遇到一个很蛋疼的teams问题&#xff0c;花了点时间才解决。本来以为是很简单的问题&#xff0c;随便网上冲浪一下就能找到答案的&#xff0c;结果根本就没有好的解决方案&#xff0c;所以我分享出来希望后来的老哥少走点弯路。 问题描述 简单来说&#xff0c;就是在Outlo…

Linux学习之IP协议

前言&#xff1a; 在学习IP协议i前&#xff0c;我们其实知道网络协议栈是一层层的&#xff0c;上层封装好之后就传给下层&#xff0c;对于我们正要学习到的TCP协议&#xff0c;在对数据进行封装之后&#xff0c;并不是直接就将数据进行传输&#xff0c;而是交给下一层网络层进…

设计模式——装饰者模式(Decorator)

装饰者模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许你动态地给一个对象添加一些额外的职责&#xff0c;就增加功能来说&#xff0c;装饰者模式相比生成子类更为灵活。在装饰者模式中&#xff0c;一个装饰类会包装一个对象&#xff08…

图像处理之PCA(C++)

图像处理之PCA&#xff08;C&#xff09; 文章目录 图像处理之PCA&#xff08;C&#xff09;前言一、PCA原理1.原理思想2.实现步骤 二、代码实现总结 前言 在科研、工程应用中&#xff0c;我们往往所获取的数据都包含着很多冗余的信息&#xff0c;这些冗余的信息会对我们分析数…

本安防爆手机在电力行业中的应用

在电力行业这一充满挑战与风险的领域中&#xff0c;安全始终是最为首要的考量。电力巡检、维修等作业往往涉及易燃、易爆环境&#xff0c;这就要求工作人员配备能够在极端条件下保障通讯和作业安全的专业设备。防爆手机应运而生&#xff0c;以其独特的设计和卓越的性能&#xf…