JS的BroadcastChannel与MessageChannel

news2024/9/25 23:18:31

BroadcastChannel与MessageChannel

BroadcastChannel

BroadcastChannel以广播的形式进行通信
BroadcastChannel用于创建浏览器标签页之间的通信
使用BroadcastChannel的浏览器标签页面必须要遵循同源策略

页面1使用BroadcastChannel创建一个频道,页面2使用BroadcastChannel链接频道,页面1与页面2即可通信。

let m1=new BroadcastChannel("channel");//入参是创建或链接的频道名,没有频道则创建通信频道,有频道则进入频道
m1.postMessage('data数据');//以广播的形式向其他链接频道的标签发送消息
m1.onmessage=(e)=>{
	console.log(e);//接收频道发送过来的消息
}

实例

//BroadcastChannel1.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <a href="http://127.0.0.1:8080/BroadcastChannel2.html" target="_blank">打开新的标签页</a>
    <button onclick="send()">点击</button>
    <script>
        const m1=new BroadcastChannel('one');
        function send(){
            m1.postMessage({
                data:"123123"
            })
        }
        m1.onmessage=(e)=>{
            console.log('e=>',e);
        }
    </script>
</body>
</html>

//BroadcastChannel2.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        const m1=new BroadcastChannel('one');
        m1.onmessage=(e)=>{
            console.log("e=>",e)
        }
        m1.postMessage('adad')
    </script>
</body>
</html>

MessageChannel

MessageChannel以通道的形式进行传值
MessageChannel无法跨越浏览器标签页通信,只能在当前标签页进行通信

MessageChannel的对象只有两个端口:prot1、port2
在这里插入图片描述

let m=new MessageChannel();//创建消息通道
//m有两个端口:prot1、prot2
m.port1.postMessage("data数据");//prot1数据肯定是向prot2发送,同理prot2也只能向prot1发送数据
m.prot2.onmessage=(e)=>{
	console.log(e);//prot2接收prot1发送的数据
}

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        let m=new MessageChannel();
        m.port1.postMessage("data");
        m.port2.onmessage=(e)=>{
            console.log(e);
        }
    </script>
</body>
</html>

Tips:使用MessageChannel传递的引用数据类型是深拷贝。也就是改变端口数据的值,发送端的数据不会改变。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/399673.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

latex入门指南:插入图片、表格、公式方法一览

省事链接&#xff1a; 生成表格latex代码&#xff1a;www.tablesgenerator.com 生成公式latex代码&#xff1a;www.latexlive.com 目录1 插入图片1.1 移动标题位置1.2 双栏文章中图片横跨双栏2 插入表格2.1 常规表格2.2 设置单元格宽度2.3 合并单元格2.4 三线表2.5 移动标题位置…

脑机接口科普0018——前额叶切除手术

本文禁止转载&#xff01;&#xff01;&#xff01; 首先说明一下&#xff0c;前额叶切除手术&#xff0c;现在已经不允许做了。 其次&#xff0c;前额叶切除手术&#xff0c;发明这个手术的人居然还获得了诺贝尔奖。太过于讽刺。1949年的那次诺贝尔医学奖&#xff08;就是我…

打怪升级之发送单个UDP包升级版

目标 1.message的输入由edit_control进行&#xff0c;需要捕获输入。 2.用户的主机地址和发送地址不一样&#xff0c;需要分别设置并绑定。 设计RC外观 必备组件&#xff1a;主机IP与端口&#xff0c;从机IP与端口&#xff0c;消息框&#xff0c;发送&#xff0c;连接按钮。…

打卡小达人之路:Spring Boot与Redis GEO实现商户附近查询

在当今社会&#xff0c;定位服务已经成为了各种应用的重要组成部分&#xff0c;比如地图、打车、美食等应用。如何在应用中实现高效的附近商户搜索功能呢&#xff1f;传统的做法是将商户的经纬度信息存储在关系型数据库中&#xff0c;然后使用SQL查询语句实现附近商户搜索功能。…

Anaconda环境配置Python数据分析库Pandas的方法

本文介绍在Anaconda环境中&#xff0c;安装Python语言pandas模块的方法。 pandas模块是一个基于NumPy的开源数据分析库&#xff0c;提供了快速、灵活、易用的数据结构和数据分析工具。它的主要数据结构是Series和DataFrame&#xff0c;可以处理各种数据格式&#xff0c;如CSV、…

听客户说|东台农商银行:建立健全数据安全管理制度的探索与实践

夯实银行数据安全&#xff0c;需“规划先行、谋定后动”&#xff0c;首要工作是确立管理工作的行动纲要&#xff0c;并据此建立制度保障体系以贯彻纲要&#xff0c;而后才是具体的行动措施和日常检查、监测。从银行数据安全建设实践路径来说&#xff0c;我认为可以用“盘现状、…

markdown(.md)常用语法

markdown&#xff08;.md&#xff09;常用语法markdown常用语法常用目录标题分割线格式空格换行无序列表有序列表列表嵌套文字引用行内代码代码块字体转义斜体加粗删除线下划线功能链接todo listtypora插入图片并保存在本地包含了一些常用的MD语法和操作&#xff0c;语法不是很…

ECS 图解

旧系统执行逻辑&#xff1a;程序开发中有一个很经典的设计模式/框架 &#xff1a;MVCvc 部分是系统&#xff0c; m 是组件。 我通过名为 index 的索引访问此数据&#xff1a;现在该组件具有用于读取和写入该数据的数据。 看看源代码中的Entity 。 struct 结构体。 64位索引 &am…

STM32查看内存占用的map文件解析

STM32查看内存占用的map文件解析STM32查看内存占用的map文件解析程序内存分析在stm32中&#xff0c;通常堆向高地址增长&#xff08;向上增长&#xff09;&#xff0c;栈向低地址增长&#xff08;向下增长&#xff09;&#xff1b;1.2 flash、ROM、RAM的区别1.3 通常stm32在kei…

跨过社科院与杜兰大学金融管理硕士项目入学门槛,在金融世界里追逐成为更好的自己

没有人不想自己变得更优秀&#xff0c;在职的我们也是一样。当我们摸爬滚打在职场闯出一条路时&#xff0c;庆幸的是我们没有沉浸在当下&#xff0c;而是继续攻读硕士学位&#xff0c;在社科院与杜兰大学金融管理硕士项目汲取能量&#xff0c;在金融世界里追逐成为更好的自己。…

如何做好项目各干系人的管理及应对?

如何更好地识别、分析和管理项目关系人&#xff1f;主要有以下几个方面&#xff1a; 1、项目干系人的分析 一般对项目干系人的分析有2种方法&#xff0c; 方法一&#xff1a;权利&#xff08;影响&#xff09;&#xff0c;即对项目可以产生影响的人&#xff1b; 方法二&#xf…

终端配色-Docker容器终端

20230309 - 0. 引言 平时使用SSH&#xff0c;通常都是使用securecrt来用&#xff0c;毕竟也算是之前windows下一种使用的工具&#xff0c;在mac下使用还算方便&#xff1b;进入终端后&#xff0c;可以通过调整配色来调整编程环境。平时经常使用屎黄色的那种配色&#xff0c;毕…

Spark单机伪分布式环境搭建、完全分布式环境搭建、Spark-on-yarn模式搭建

搭建Spark需要先配置好scala环境。三种Spark环境搭建互不关联&#xff0c;都是从零开始搭建。如果将文章中的配置文件修改内容复制粘贴的话&#xff0c;所有配置文件添加的内容后面的注释记得删除&#xff0c;可能会报错。保险一点删除最好。Scala环境搭建上传安装包解压并重命…

千言数据集赛题介绍

赛题题目 通用信息抽取任务评测 将多种不同的信息抽取任务用统一的通用框架进行描述&#xff0c;着重考察相关技术方面在面对新的、未知的信息抽取任务与范式时的适应和迁移能力。 赛题介绍 信息抽取旨在将非结构化文本中的信息进行结构化&#xff0c;是自然语言处理的基础…

Highcharts 写 venn图 (韦恩图),以及解决项目中venn的报错

Highcharts 写 venn图 鼠标悬浮效果以及点击事件 效果图如下&#xff1a; 参考highcharts官网venn 具体方法 安装包依赖&#xff1a;npm install highcharts //组件中引入 import Highcharts from highcharts; // import exportingInit from highcharts/modules/export…

【项目总结】基于SSM+SpringBoot+Redis的个人博客系统项目总结

文章目录项目介绍&#xff08;开发背景&#xff09;数据库设计主要使用到的技术点前端后端自定义统一返回对象自定义拦截器加盐加密操作分页功能session持久化自定义头像的存储和获取项目编写过程中遇到的困难点困难点一&#xff08;小&#xff09;困难点二&#xff08;小&…

C++11:右值引用和移动语义

文章目录1. 左值和右值表达式1.1 概念1.2 左值和右值2. 左值引用和右值引用2.1 相互引用2.2 示例代码2.3 左值引用使用场景缺点2.4 右值引用和移动语义小结2.5 移动赋值2.6 右值引用的其他使用场景右值引用版本的插入函数3. 完美转发3.1 万能引用3.2 如何实现完美转发3.3 完美转…

u盘拔掉再插上去文件没了原因|文件恢复方法

如果您遇到了“u盘拔了再插文件变空了”的类似问题困扰&#xff0c;请仔细阅读文本&#xff0c;下面将分享几种方法来恢复u盘上丢失的文件&#xff0c;赶紧来试试&#xff01;为什么u盘拔掉再插上去文件没了“我的u盘为什么放进东西后拔出&#xff0c;再插进电脑去东西就没有了…

从零开始学架构——复杂度来源

复杂度来源——高性能 对性能孜孜不倦的追求是整个人类技术不断发展的根本驱动力。例如计算机,从电子管计算机到晶体管计算机再到集成电路计算机,运算性能从每秒几次提升到每秒几亿次。但伴随性能越来越高&#xff0c;相应的方法和系统复杂度也是越来越高。现代的计算机CPU集成…

前端——5.HTML标签_段落标签和换行标签

这篇文章&#xff0c;我们来讲解一下HTML标签中的段落标签和换行标签 目录 1.段落标签 1.1介绍 1.2实际案例 1.3小拓展 2.换行标签 2.1介绍 2.2实际案例 3.小结 1.段落标签 我们首先来讲解一下段落标签 1.1介绍 在网页中&#xff0c;要把文字有条理地显示出来&…