news 2026/6/13 23:39:38

前端跨标签页通信方案(上)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
前端跨标签页通信方案(上)

前情

平时开发很少有接触到有什么需求需要实现跨标签页通信,但最近因为一些变故,不得不重新开始找工作了,其中就有面试官问到一道题,跨标签页怎么实现数据通信,我当时只答出二种,面试完后特意重新查资料,因此有些文章

localStorage / sessionStorage

利用localStorage的存储事件实现通信,当一个标签页修改localStorage时,其他同源标签页会触发storage事件

关键代码如下:

标签页1

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>page0-localStorage</title>

</head>

<body>

<button id="setCacheBtn">设置本地缓存</button>

<script>

document.getElementById('setCacheBtn').addEventListener('click', () => {

localStorage.setItem('message', JSON.stringify({

type: 'greeting',

// 这里为了保证通信每次生效,每次都设置不同的值

content: 'Hello from page0.html' + Date.now()

}));

});

</script>

</body>

</html>

标签页2

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>page1-localStorage</title>

</head>

<body>

<script>

window.addEventListener('storage', (e) => {

if (e.key === 'message') {

const data = JSON.parse(e.newValue);

console.log('Received:page1.html', data);

}

});

</script>

</body>

</html>

动图演示:

20250923_193504

提醒:

同源标签才有效

设置不同的本地存储值才有效,如果设置的是同一个缓存值是不会生效的

兼容性非常nice,可以大胆使用了,国内一些浏览器从can i use查不到,但兼容性是没啥问题的

sessionStorage仅在同一标签页的不同 iframe 间有效,不适用于不同标签页

image

BroadcastChannel

专门用于同源标签页通信的 API,创建一个频道后,所有加入该频道的页面都能收到消息

关键代码如下:

标签页1

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>BroadcastChannel0</title>

</head>

<body>

<h1>BroadcastChannel0</h1>

<button id="communication">BroadcastChannel0.html 发送消息</button>

<script>

// 所有页面都创建相同名称的频道

const channel = new BroadcastChannel('my_channel');

// 发送消息

document.getElementById('communication').addEventListener('click', () => {

channel.postMessage({ type: 'update', data: 'new content from BroadcastChannel0.html' });

});

</script>

</body>

</html>

标签页2

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>BroadcastChannel1</title>

</head>

<body>

<h1>BroadcastChannel1</h1>

<script>

// 所有页面都创建相同名称的频道

const channel = new BroadcastChannel('my_channel');

// 接收消息

channel.onmessage = (e) => {

console.log('Received:BroadcastChannel1.html', e.data);

};

</script>

</body>

</html>

演示动图如下:

20250923_200047

提醒:

要通信的标签记得都初始化BroadcastChannel,一定记得使用相同的名称

查询来看除IE外可以大但使用了

image 1

小结

这二种是我面试的时候答出来的,第二种我只是模糊记得跟面试官模棱二可的说了说,面试馆给了正面的回应,呵呵……,此文暂时写这么多,下篇继续探索其它方式……

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 8:14:14

POSIX兼容系统上read和write系统调用的行为总结

不管是普通文件&#xff0c;还是硬件设备、管道、网络套接字&#xff0c;在Linux甚至还有信号和定时器都共享一套相似的api&#xff0c;大家可以用类似的代码完成各种不同的任务&#xff0c;大大简化了代码复杂度和学习成本。当然这只是理想中的情况&#xff0c;现实是普通文件…

作者头像 李华
网站建设 2026/6/12 5:37:40

16、云计算:虚拟化与OpenStack搭建指南

云计算:虚拟化与OpenStack搭建指南 在云计算领域,虚拟化技术和云平台的搭建是关键环节。本文将详细介绍如何使用相关工具创建和管理虚拟机,以及如何搭建和使用OpenStack云平台。 1. 安装VirtualBox 在Ubuntu系统上安装VirtualBox,需要先添加Oracle公共密钥,然后进行安装…

作者头像 李华
网站建设 2026/6/12 13:25:32

孔德之容,惟道是从。道之为物,惟恍惟惚。惚兮恍兮,其中有象;恍兮惚兮,其中有物;窈兮冥兮,其中有精;其精甚真,其中有信。自古及今,其名不去,以阅众甫。吾何以知众甫之状哉?以此。

欲明此章之本义&#xff0c;需逆向反推可知其宗。圣人何以洞悉此道耶&#xff1f;夫道之为物&#xff0c;或有相&#xff0c;或无相&#xff0c;斯乃物之两仪&#xff0c;其变惟恍惟惚。其象或远或近&#xff0c;或大或小&#xff0c;或前或后&#xff0c;或动或静&#xff0c;…

作者头像 李华
网站建设 2026/6/12 12:01:27

22、多媒体流与通信服务器搭建指南

多媒体流与通信服务器搭建指南 1. Ampache服务器内容上传与目录创建 在安装好Ampache流媒体服务器后,接下来要学习如何上传音频/视频内容并创建第一个目录。 - 准备工作 - 准备要上传到服务器的音频和视频文件,确保服务器有足够空间存储。 - 将所有内容上传到Ampache服…

作者头像 李华
网站建设 2026/6/11 21:48:06

CentOS停止维护后,企业主流替代方案是哪些?

CentOS 于 2021 年底正式终止对 CentOS Linux 8 的支持&#xff08;原定支持至2029年&#xff0c;但Red Hat于2020年12月突然宣布提前终止&#xff09;&#xff0c;并停止维护 CentOS Linux 7&#xff08;2024年6月30日已正式EOL&#xff09;。这一战略转向&#xff08;聚焦 Ce…

作者头像 李华
网站建设 2026/6/13 18:34:34

Zen Browser新标签页定制:打造你的专属数字工作空间

还在为浏览器主页千篇一律而烦恼吗&#xff1f;Zen Browser作为一款注重隐私保护的个性化浏览器&#xff0c;提供了强大的新标签页定制功能&#xff0c;让你告别单调&#xff0c;开启高效浏览新时代。本文将带你从零开始&#xff0c;逐步打造真正属于你的数字工作空间。 【免费…

作者头像 李华