前端跨页面通信,你知道哪些方法?

一、同源页面

1.广播站模式

一个页面将消息通知给一个“中央站”,再由“中央站”通知给各个页面,以下会介绍这个中央站可以是LocalStorage,可以是BroadCast Channel实例,也可以是一个Service worker

1.1.LocalStorage+StorageEvent

前端最常用的本地存储,localStorage变化会触发storage事件,通过监听storage事件就可以收到通知

<script>window.addEventListener('storage', function (e) {if (e.key === 'zhengzhou') {const newValue = JSON.parse(e.newValue)const oldValue = JSON.parse(e.oldValue)console.log('data', newValue, oldValue)}})const mydata = { name: '小芳', age: 23 }mydata.st = +new Date()window.localStorage.setItem('zhengzhou', JSON.stringify(mydata))
</script>

去浏览器的local缓存中修改值,就会触发storage事件

1.2.BroadCast Channel

广播频道:用于同源不同页面之间完成通信的功能

const bc = new BroadcastChannel('zhengzhou')
bc.postMessage('敬个礼,握握手,我们都是好朋友')
bc.onmessage = function (e) {console.log('data', e)
}
// bc.close() // 关闭通道

接下来你就可以在浏览器打开两个tab页愉快的进行通讯啦。。。

在这里插入图片描述

1.3.Service worker

多页面共享,service worker作为消息处理中心可实现广播的效果:可长期运行在后台的worker中,能够实现与页面的双向通行(等待探索),也是PWA:渐进式网页应用程序的核心技术之一

2.共享存储+轮询模式
2.1.IndexedDB/Cookie

在移动端中,由于使用的是Webview,可以使用Webview提供的Cookie共享功能实现。
在前后端分离的项目中,可以使用JWT(Json Web Token)来进行身份验证,并用它来代替Cookie来实现跨域共享

2.2.Shared Worker

Worker家族的一个家庭成员:Share Worker:跨页面通信时无法主动通知所有的页面,所以我们采用轮询的方式来拉取最新的数据。shared worder实现简单的聊天室
支持两种消息
1.post:share worker收到后将数据保存下来
2.get:share worker收到消息后将保存的数据通过postMessage传给注册他的页面,也就是让页面通过get来主动获取(同步)消息

3.口口相传模式
3.1.window.open+window.opener
4.基于服务端
4.1.websocket
4.2.comet
4.3.SSE

二、非同源页面通信

使用用户不可见的iframe作为桥,由于iframe与父页面组件可以通过origin来忽略同源限制,因此可以在页面中嵌入iframe

iframe通信也非常的简单

// 监听消息
window.addEventListener('message',function(e){})
// 发送消息
window.frames[0].window.postMessage({name:'小芳',age:23},*) // 第二个参数也可以设置为iframe的url
// 发送消息
window.frames[0].window.postMessage({name:'小芳',age:23},*) // 第二个参数也可以设置为iframe的url
// iframe接收消息后可以在所有iframe间同步消息
// 例如使用Broadcast channel
const bc = new BroadcastChannel('zhengzhou')
// 接收到页面消息后,在iframe间进行广播
window.addEventListener('message',function(e){bc.postMessage(e.data)
})
// 其他iframe页面接收到通知后,将消息同步给所属页面
bc.onmessage=function(e){window.parent.postMessage(e.data,'*')
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信息科技如何做好风险管理

文章目录 前言介绍亮点结构读者对象 前言 信息科技对金融业务发展所起的作用是举足轻重的。 近年来&#xff0c;金融机构在战略规划中相继引入科技引领的概念。作为金融机构信息科技从业人员&#xff0c;我们笃信信息科技是一个非常有用的工具&#xff0c;一个兼具产品思维和管…

虹科 | 解决方案 | 汽车示波器 远程诊断方案

车厂总部专家实时指导你修车 当一线汽修技师遇到疑难问题无从下手时&#xff0c;可以准备好pico汽车示波器套装&#xff0c;并戴上我们的M400智能AR眼镜&#xff0c;通过语音操作&#xff0c;呼叫主机厂的技术支持老师&#xff1b;老师通过AR眼镜上的摄像头老师可以实时看到现…

【产品运营】产品需求应该如何管理

产品项目在进行时经常会有一些需求需要实现&#xff0c;需求是产品更新迭代的动力&#xff0c;需求也是从用户诉求转化而来&#xff1b;在做需求管理时&#xff0c;我们需要判断一个需求的优先级等方面&#xff0c;对产品进行优化&#xff1b; 目录&#xff1a; 一、 为什么要…

蓝桥算法赛(铺地板)

问题描述 小蓝家要装修了&#xff0c;小蓝爸爸买来了很多块&#xff08;你可以理解为数量无限&#xff09; 23 规格的地砖&#xff0c;小蓝家的地板是 nm 规格的&#xff0c;小蓝想问你&#xff0c;能否用这些 23 的地砖铺满地板。 铺满地板&#xff1a;对于地板的每个区域&…

vulnhub_DeRPnStiNK靶机渗透测试

VulnHub2018_DeRPnStiNK靶机 https://www.vulnhub.com/entry/derpnstink-1,221/ flag1(52E37291AEDF6A46D7D0BB8A6312F4F9F1AA4975C248C3F0E008CBA09D6E9166) flag2(a7d355b26bda6bf1196ccffead0b2cf2b81f0a9de5b4876b44407f1dc07e51e6) flag4(49dca65f362fee401292ed7ada96f9…

第14期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练 Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大型语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以…

RGB-T Salient Object Detection via Fusing Multi-Level CNN Features

ADFC means ‘adjacent-depth feature combination’&#xff0c;MGF means ‘multi-branch group fusion’&#xff0c;JCSA means ‘joint channel-spatial attention’&#xff0c;JABMP means ‘joint attention guided bi-directional message passing’ 作者未提供代…

JMeter + Ant + Jenkins持续集成-接口自动化测试

需要安装的工具&#xff1a; jdk1.8jmeter3.2ant1.9jenkins2.1 1、Jdkwin7系统如何安装jdk及环境变量的配置-百度经验 安装包安装设置环境变量验证是否安装正确 Java -version检查&#xff0c;如下就代表安装成功了&#xff0c;环境变量设置就去搜索了&#xff0c;网上很多…

海外问卷调查项目是骗人的吗?

大家好&#xff0c;我是橙河网络&#xff0c;今天我们聊一聊海外问卷调查项目是骗人的吗&#xff1f; 在许多人初次接触到海外问卷这个项目时&#xff0c;他们会对“海外”或“国外”这些字眼产生疑虑&#xff0c;觉得这个项目是不是有问题&#xff0c;是不是骗人的&#xff1…

ubuntu 安装 gnome 安装 xrdp

先安装xrdp 更新 apt-get sudo apt-get update && apt-get upgrade安装图形包 apt-get install xubuntu-desktop安装 xrdp apt-get install xrdp安装 xfce4 apt-get install xfce4配置 xfce4 Add xfce to the xfce desktop window manager autorun by fixing the …

Windows / Ubuntu 连wifi,网线连接旭日X3派以共享网络

首先&#xff0c;PC电脑连好wifi Windows 找到【控制面板->网络和Internet->网络和共享中心->查看网络状态和任务->更改适配器设置】 找到WLAN&#xff0c;右键【属性->共享】勾上允许&#xff0c;然后【确定】。 Ubuntu 打开设置&#xff0c;找到有线设置…

完整攻防知识体系-你值得拥有

文章目录 前言内容简介目录 前言 根据中国互联网络信息中心&#xff08;CNNIC&#xff09;发布的第51次《中国互联网络发展状况统计报告》&#xff0c;截至2022年12月&#xff0c;我国网民规模为10.67亿&#xff0c;互联网普及率达75.6%。 我国有潜力建设全球规模最大、应用渗透…