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

页面通信策略

页面通信本质分 3 类:

1. 同源页面通信 2. 跨源页面通信 3. 不同上下文(Tab / iframe / Worker)

一、同源页面通信

同协议 + 域名 + 端口

1. localStorage / sessionStorage

基于:Web Storage API

localStorage.setItem('msg','hello')

监听:

window.addEventListener('storage',(e)=>{console.log(e.key,e.newValue)})
  • ✅ 跨 Tab 通信
  • ❌ 当前页面不会触发
  • ❌ 只能字符串

2. BroadcastChannel

基于:BroadcastChannel

constchannel=newBroadcastChannel('test')channel.postMessage('hello')channel.onmessage=(e)=>{console.log(e.data)}
  • API 简单
  • 支持多 Tab
  • 实时通信
  • 兼容性略差(老浏览器)

3. window.open + window.opener

constchild=window.open('/page')child.postMessage('hello','*')

父子页面通信

4. SharedWorker

多页面共享一个 worker

多个 tab → 同一个 worker → 中转通信

二、跨源页面通信

不同域名(比如 iframe)

1. postMessage

基于:Window.postMessage

// 发送iframe.contentWindow.postMessage('hello','https://a.com')// 接收window.addEventListener('message',(e)=>{if(e.origin==='https://a.com'){console.log(e.data)}})
  • 支持跨域
  • 安全(可校验 origin)
  • 最通用
必须校验 origin,否则有安全风险

2. iframe + URL 参数(

iframe src="https://a.com?msg=hello"

通过 URL 传参

  • 不实时
  • 只能单向
  • 不安全

页面通信方式可以分为同源和跨源两类。同源场景下可以使用 localStorage、BroadcastChannel 或 SharedWorker 实现多 Tab 通信;跨源场景下主要使用 postMessage,它通过消息机制实现不同窗口间安全通信。

http://www.jsqmd.com/news/614282/

相关文章:

  • 如何快速集成Active Merchant到Rails应用:完整配置指南
  • 基于STM32LXXX的数字电位器(AD5160BRJZ5-RL7)驱动应用程序设计
  • 执医历年真题试卷推荐哪一个?请查收这份推荐指南 - 医考机构品牌测评专家
  • 信捷PLC控制 台达伺服电机实现手动自动与循环控制
  • OpenClaw+千问3.5-9B智能监控:服务器日志异常自动告警
  • CF1990E2 抓鼹鼠 解题报告
  • 世界模型笔记
  • EasyAnimateV5-7b-zh-InP与Dify结合:低代码视频生成平台搭建
  • 为什么92%的农业SaaS项目死在配置环节?PHP动态表单引擎+拖拽式规则编排实战揭秘
  • 贾子(Kucius)对波普尔证伪主义的系统性批判:从“双标霸权”到“文明可持续”新标尺
  • SpyGlass CDC约束优化:从误报削减到高效调试
  • flask配置热更新
  • A1:GitHub Copilot从入门到精通【从基础补全到智能代理,解锁AI编程全技能】
  • 书匠策AI:论文写作界的“智能导航仪”,让课程论文创作如行云流水!
  • 【stm32 库函数开发】01 学习简介
  • Axure本地化指南:零基础快速配置多版本中文界面
  • 《QGIS快速入门与应用基础》268:国土行业标准布局模板
  • Claude Mythos官宣!性能碾压Opus 4.6贵5倍,因太危险遭「囚禁」
  • 135.DS--第一章
  • 6.1 链路追踪 (Tracing)
  • 贾子思想三原则:规律审判、认知觉醒与文明共生
  • 嵌入式Linux开发时双网络配置:开发板与互联网的并行访问
  • 千问3.5-2B企业知识库接入:将图理解结果自动打标,注入RAG向量库
  • 如何通过 5 种解决方案从 Infinix 恢复已删除的文件
  • 高性能客服系统技术内幕:通过 SpinWait 自旋等待结构体提升高频消息分发性能敬
  • Qwen3.5-2B轻量化模型效果:20亿参数下长文本摘要保持关键信息率
  • 国产免费2B开源语音模型征服《莽撞人》!复刻郭德纲最难贯口
  • OpenClaw 的 sessions_send 机制
  • 涨薪技术|Prometheus自定义告警规则
  • 第十四届蓝桥杯省赛C/C++ 大学 B 组 第五题 接龙数列