当前位置: 首页 > news >正文

【 HTML 及浏览器 】前端跨页面通信

前端跨页面通信:连接分散界面的纽带

在构建复杂的前端应用时,我们常常需要在不同的页面之间进行数据通信。无论是同源页面还是非同源页面,通信机制都是实现多页面数据同步和交互的关键。本文将探讨各种前端跨页面通信的方法,并提供最佳实践指南。

1. 本地存储机制(LocalStorage/SessionStorage)

特点

  • 同源策略:只能在相同的源(协议、域名和端口)之间共享数据。
  • 简单易用:API简单直观,容易上手。
  • 存储限制:通常有5MB的存储限制。

实现方式

  1. 页面A存储数据:
localStorage.setItem('key', 'value');
  1. 页面B监听存储事件:
window.addEventListener('storage', function(event) {if (event.key === 'key') {console.log('New Value: ' + event.newValue);}
});

最佳实践

  • 使用封装好的函数来处理复杂数据结构的序列化和反序列化。
  • 适合非敏感数据的存储,因为数据存储在本地。

2. Cookie

特点

  • 跨域共享:可以配置跨域共享Cookie。
  • 限制多:每个cookie大小限制在4KB左右,且每个域下cookie的数量也有限制。

实现方式

  1. 页面A设置Cookie:
document.cookie = "key=value; path=/; domain=yourdomain.com";
  1. 页面B读取Cookie:
let value = document.cookie.replace(/(?:(?:^|.*;\s*)key\s*\=\s*([^;]*).*$)|^.*$/, "$1");

最佳实践

  • Cookie应用于需要服务器读取的少量数据的存储。
  • 注意安全性,对敏感数据进行加密处理。

3. WebSockets

特点

  • 全双工通信:允许同时进行双向通信。
  • 实时性:适合需要实时数据更新的应用。

实现方式

  1. 页面A和页面B都连接相同的WebSocket服务器:
let socket = new WebSocket('ws://yourwebsocketserver.com');
  1. 发送消息:
socket.send('Your message');
  1. 接收消息:
socket.onmessage = function(event) {console.log('New Message: ', event.data);
};

最佳实践

  • 适用于需要高实时性的通信场景,如在线游戏、聊天应用。
  • 保证WebSocket服务器稳定性和安全性。

4. Broadcast Channel API

特点

  • 同源页间通信:允许同一浏览器实例中的不同页面间通信。
  • 简单的API:API简单,易于理解和使用。

实现方式

  1. 页面A创建和发送消息:
let channel = new BroadcastChannel('channel_name');
channel.postMessage('Message from A');
  1. 页面B监听消息:
let channel = new BroadcastChannel('channel_name');
channel.onmessage = function(event) {console.log('Received Message: ', event.data);
};

最佳实践

  • 适合同源页面间的简单消息传递。
  • 需要考虑兼容性,不是所有浏览器都支持。

5. Window.postMessage

特点

  • 跨域安全通信:可用于不同源之间的窗口通信。
  • 安全性:可以通过originsource属性验证消息来源。

实现方式

  1. 页面A发送消息:
windowB.postMessage('Message', 'http://yourdomain.com');
  1. 页面B监听消息:
window.addEventListener('message', function(event) {if (event.origin !== 'http://yourdomain.com') return;console.log('Received Message: ', event.data);
});

最佳实践

  • 适用于iframe或打开的新窗口的父子通信。
  • 验证消息来源,确保通信安全。

结论

前端跨页面通信是多页面应用中不可或缺的部分。掌握不同的通信方式和最佳实践可以帮助开发者构建出既高效又安全的应用。在选择通信方式时,要考虑应用的具体需求,如同源策略、实时性、安全性、数据大小和存储方式等因素,并结合现代前端框架和库提供的抽象层,以保证企业级解决方案的稳定与可维护性。

相关文章:

【 HTML 及浏览器 】前端跨页面通信

前端跨页面通信:连接分散界面的纽带 在构建复杂的前端应用时,我们常常需要在不同的页面之间进行数据通信。无论是同源页面还是非同源页面,通信机制都是实现多页面数据同步和交互的关键。本文将探讨各种前端跨页面通信的方法,并提…...

内存安全的编程语言

美国政府新颁布《回归基础构件:通往安全软件之路》 《回归基础构件:通往安全软件之路》中,白宫国家网络主任办公室(ONCD)呼吁开发者使用「内存安全的编程语言」 内存安全的编程语言 根据NSA的建议,内存…...

Excel常用公式总结非常实用

16个最实用的Excel万能公式 1、多条件判断 IF(And(条件1,条件2..条件N),条件成立返回值) IF(or(条件1,条件2..条件N),条件成立返回值) 2、多条件查找 Lookup(1,0/((条件1*条件2*...条件N)),返回值区域) 3、多条件求和 Sumifs(值区域,判断区域1,条件1,判断区域2,条…...

window路径特殊字符解决

官方定义命名规范 https://learn.microsoft.com/zh-cn/windows/win32/fileio/naming-a-file 重点 1.目录规范 特殊字符以空格 与点.开头结尾 2.文件规范 特殊字符以空格 与点.开头结尾NUL、COM等文件 解决方案 字符标点符号实际上在字符集定义中有一个很有趣的现象&…...

『大模型笔记』RAG 系统开发中的12大痛点及解决方案

RAG 系统开发中的12大痛点及解决方案 文章目录 问题引入一. 痛点 1:缺失内容1.1. 数据清洗的重要性1.2. 精心设计的提示(Prompt)有助于提高准确性二. 痛点 2:关键文档被遗漏2.1. 通过调整 chunk_size 和 similarity_top_k 参数优化检索效果2.2. 检索结果的优化排序三. 痛点…...

VScode---php环境搭建

文章目录 1.下载php Dehug;php server2.下载php环境3.配置环境变量5.配置php.ini文件6.设置vscode6.测试遇到的问题 1.下载php Dehug;php server 2.下载php环境 下载地址:https://www.php.net/downloads.php 3.配置环境变量 C:\Users\hacker>php -v PHP 8.3.3 (…...

【Vue3】3-6 : 仿ElementPlus框架的el-button按钮组件实

文章目录 前言 本节内容实现需求完整代码如下: 前言 上节,我们学习了 slot插槽,组件内容的分发处理 本节内容 本小节利用前面学习的组件通信知识,来完成一个仿Element Plus框架的el-button按钮组件实现。 仿造的地址:uhttps://…...

.datastore@cyberfear.com.mkp勒索病毒的最新威胁:如何恢复您的数据?

导言: 我们享受着数字化带来的便利,但同时也要面对不断演进的网络威胁。最近出现的 .datastorecyberfear.com.mkp、[hendersoncock.li].mkp [hudsonLcock.li]、.mkp [myersairmail.cc].mkp 勒索病毒就是其中之一,它对我们的数据安全构成了…...

23.基于springboot + vue实现的前后端分离-在线旅游网站系统(项目 + 论文PPT)

项目介绍 本旅游网站系统采用的数据库是MYSQL ,使用 JSP 技术开发,在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。 技术选型 后端: SpringBoot Mybatis 数据库 : MyS…...

SpringCloud-RabbitMQ消息模型

本文深入介绍了RabbitMQ消息模型,涵盖了基本消息队列、工作消息队列、广播、路由和主题等五种常见消息模型。每种模型都具有独特的特点和适用场景,为开发者提供了灵活而强大的消息传递工具。通过这些模型,RabbitMQ实现了解耦、异步通信以及高…...

Linux网络编程 ——UDP 通信

Linux网络编程 ——UDP 通信 1. UDP1.1 UDP 通信1.2 广播1.3 组播&#xff08;多播&#xff09; 2. 本地套接字 1. UDP 1.1 UDP 通信 输入 man 2 sendto 查看说明文档 #include <sys/types.h> #include <sys/socket.h>ssize_t sendto(int sockfd, const void *buf…...

TDengine 签约树根互联,应对“高基数”难题

近日&#xff0c;树根互联与涛思数据达成签约合作&#xff0c;共同推动智能制造领域的建设。作为一家处于高速发展期的工业互联网企业&#xff0c;树根互联将新一代信息技术与制造业深度融合&#xff0c;开发了以自主可控的工业互联网操作系统为核心的工业互联网平台——根云平…...

实名制交友-智能匹配-仿二狗交友系统-TP6+uni-APP小程序H5公众号-源码交付-支持二开!

一、代码风格 通常不同的开发者具备不同的代码风格&#xff0c;但为了保证语音交友系统开发质量&#xff0c;在编码前需要进行代码风格的统一&#xff0c;通过制定一定的规则&#xff0c;约束开发者的行为。具有统一风格的代码才能更清晰、更完整、更容易理解、更方便后期维护…...

在CentOS上使用Gunicorn和systemd完整部署Flask应用:详细指南

在现代Web开发中,选择合适的技术栈对于确保应用的稳定性、性能和易于管理至关重要。本篇博客将深入探讨如何在CentOS系统上利用Flask、Gunicorn和systemd的强大组合来部署Web应用。这个全面的流程不仅包括应用的创建和运行,还涉及到如何利用系统服务来管理应用的生命周期,确…...

【信息系统项目管理师】--【信息技术发展】--【新一代信息技术及应用】--【人工智能】

文章目录 第二章 信息技术发展2.2 新一代信息技术及应用2.2.5 人工智能1.技术基础2.关键技术3.应用和发展 第二章 信息技术发展 信息技术是在信息科学的基本原理和方法下&#xff0c;获取信息、处理信息、传输信息和使用信息的应用技术总称。从信息技术的发展过程来看&#xff…...

注意力机制(代码实现案例)

学习目标 了解什么是注意力计算规则以及常见的计算规则.了解什么是注意力机制及其作用.掌握注意力机制的实现步骤. 1 注意力机制介绍 1.1 注意力概念 我们观察事物时&#xff0c;之所以能够快速判断一种事物(当然允许判断是错误的), 是因为我们大脑能够很快把注意力放在事物…...

全量知识系统问题及SmartChat给出的答复 之8 三套工具之3语法解析器 之1

Q19. 问题 : 解释单词解释单词occupied 的字典条目 (word-def occupiedinterest 5type EBsubclass SEBtemplate (script $Demonstrateactor nilobject nildemands nilmethod (scene $Occupyactor nillocation nil))fill (((actor) (top-of *actor-s…...

软考59-上午题-【数据库】-小结+杂题

一、杂题 真题1&#xff1a; 真题2&#xff1a; 真题3&#xff1a; 真题4&#xff1a; 真题5&#xff1a; 真题6&#xff1a; 真题7&#xff1a; 真题8&#xff1a; 二、数据库总结 考试题型&#xff1a; 1、选择题&#xff08;6题&#xff0c;6分&#xff09; 2、综合分析题…...

【ARM Trace32(劳特巴赫) 高级篇 21 -- SystemTrace ITM 使用介绍】

文章目录 SystemTrace ITMSystemTrace ITM 常用命令Trace Data AnalysisSystemTrace ITM CoreSight ITM (Instrumentation Trace Macrocell) provides the following information: Address, data value and instruction address for selected data cyclesInterrupt event info…...

Python系列(20)—— 循环语句

Python中的循环控制语句 一、引言 在Python编程中&#xff0c;循环是重复执行一段代码直到满足特定条件的基本结构。Python提供了多种循环控制语句&#xff0c;如For 和While &#xff0c;以及用于控制循环流程的辅助语句&#xff0c;如Break、Continue和Pass。这些语句的组合…...

BP-4500-PoER工控机:宽温无风扇设计,6网口4PoE+,赋能机器视觉与边缘计算

1. 项目概述&#xff1a;一台为严苛环境而生的工业视觉“大脑”在机器视觉、边缘计算或者工业自动化现场&#xff0c;我们常常需要一台足够“皮实”的计算机。它不能是办公室里娇贵的台式机&#xff0c;也不能是性能孱弱的单板机。它需要扛得住产线上的粉尘、振动&#xff0c;耐…...

端侧AI与嵌入式系统融合:从模型轻量化到5G通信的产业化落地

1. 从展会看趋势&#xff1a;端侧AI与嵌入式系统的深度融合最近在德国纽伦堡举办的国际嵌入式展览会&#xff0c;可以说是全球嵌入式技术发展的风向标。作为从业者&#xff0c;我每年都会关注这个展会&#xff0c;因为它总能揭示未来几年工业和技术应用的核心走向。今年&#x…...

百考通:AI一键生成期刊论文写作,全流程智能化支撑,让学术创作更高效

在学术研究领域&#xff0c;期刊论文的撰写是成果输出的关键环节&#xff0c;却也让众多科研工作者与学生倍感压力&#xff1a;选题迷茫、逻辑梳理困难、格式规范复杂、内容提炼耗时&#xff0c;严重拖慢了学术成果的发表节奏。百考通&#xff08;https://www.baikaotongai.com…...

书匠策AI实测揭秘:毕业论文全流程竟然能这样“偷懒“?

各位同学&#xff0c;我是一个专门教别人写论文的博主。说实话&#xff0c;每次看到评论区有人问"论文到底怎么开头"&#xff0c;我都想穿越屏幕去帮他敲键盘。 但今天不一样&#xff0c;我要给你们安利一个我自己偷偷用了好几次的工具——书匠策AI。注意&#xff0…...

保姆级教程:用微信小程序测试号搞定getPhoneNumber功能(绕过企业认证限制)

微信小程序测试号实战&#xff1a;零成本解锁getPhoneNumber全流程指南 最近在帮朋友开发一个预约类小程序时&#xff0c;遇到了一个典型问题&#xff1a;需要获取用户手机号进行预约确认&#xff0c;但个人开发者账号无法直接调用getPhoneNumber接口。这让我想起了三年前第一次…...

星光不负赶路人——写给即将高考的每一位同学

在高考即将结束的时刻。在你放下了笔&#xff0c;走出了考场&#xff0c;站在了成年人世界的门槛上的时刻。送给你们一段话和几个思考。这几天&#xff0c;你大概会反复听到一句话&#xff1a;“星光不负赶路人。”大家用它来祝福你&#xff0c;赞美你过去三年的努力。但今天&a…...

个人开发者如何利用Taotoken统一管理多个AI项目API调用

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 个人开发者如何利用Taotoken统一管理多个AI项目API调用 作为一名独立开发者&#xff0c;你可能同时维护着多个小产品&#xff0c;例…...

观察性研究混杂偏倚控制【9天实用统计学公益训练营Day3-1】

关注公众号的朋友都知道&#xff0c;郑老师我之前连续4年开设了“30天学会医学统计学”&#xff0c;从理论到实操&#xff0c;一步一步教会大家统计学、SPSS课程。2026年&#xff0c;我们对这门课程进行全新升级&#xff01;课程时间大幅度缩短&#xff0c;内容大幅度提升&…...

Java 面向对象 - 触发类的初始化,执行其中的 static 块(包含不会触发初始化的情况)

触发类的初始化&#xff0c;执行其中的 static 块 访问 static 字段 public class SomeClass {static {System.out.println("static block executed");}public static int num 100; }int num SomeClass.num;访问 static 方法&#xff0c;可以使用空方法&#xff08…...

企业AI项目紧急叫停!DeepSeek许可证新增限制条款(2024.06.18生效)及72小时补救路径

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;DeepSeek许可证紧急变更事件全景速览 2024年7月12日&#xff0c;DeepSeek官方突然宣布对其开源模型系列&#xff08;包括DeepSeek-V2、DeepSeek-Coder、DeepSeek-MoE等&#xff09;的许可证进行紧急修订&#…...