window.postMessage()实现跨域通信和页面间数据通信

简介: window.postMessage()实现跨域通信和页面间数据通信

window.postMessage() 方法可以安全地实现跨域通信和页面间数据通信。


postMessage 可用于解决以下方面的问题:


页面和其打开的新窗口的数据传递

页面与嵌套的 iframe 消息传递

多窗口之间消息传递


接口参数

otherWindow.postMessage(message, targetOrigin, [transfer]);

targetOrigin:


同源的话:"/"

无限制:“*”

不同页面间通讯

A.html


// 发送消息
var child = window.open("B.html");
setTimeout(function () {
    child.postMessage("你好", "*");
}, 3000);
// 接收消息
window.addEventListener("message", receiveMessage);
function receiveMessage(event) {
    console.log(event.data);
}

B.html


// 接收消息
window.addEventListener("message", receiveMessage);
function receiveMessage(event) {
    event.source.postMessage(event.data, "*");
    console.log(event);
}

iframe父子通讯

A.html


<iframe id="iframe" src="B.html" frameborder="0"></iframe>
<script>
  var iframe = document.getElementById("iframe");
  iframe.onload = function () {
    // 发送跨域数据
    iframe.contentWindow.postMessage("你好", "*");
  };
  // 接收消息
  window.addEventListener("message", receiveMessage);
  function receiveMessage(event) {
    console.log(event.data);
  }
</script>

B.html

// 接收消息
window.addEventListener("message", receiveMessage);
function receiveMessage(event) {
    event.source.postMessage(event.data, "*");
    console.log(event);
}
相关文章
|
存储 机器学习/深度学习 人工智能
数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)
数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)
数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)
|
11月前
|
消息中间件 人工智能 Serverless
主动式智能导购AI助手构建解决方案评测
主动式智能导购AI助手构建解决方案评测
459 3
|
Ubuntu Linux 数据安全/隐私保护
Windows就是Linux:WSL带来全新Linux开发体验
Windows就是Linux:WSL带来全新Linux开发体验
|
机器学习/深度学习 自然语言处理 搜索推荐
承上启下:基于全域漏斗分析的主搜深度统一粗排
两阶段排序(粗排-精排)一开始是因系统性能问题提出的排序框架,因此长期以来粗排的定位一直是精排的退化版本,业内的粗排的优化方向也是持续逼近精排。我们提出以全域成交的hitrate为目标的全新指标,重新审视了召回、粗排和精排的关系,指出了全新的优化方向
94264 3
攻防演练中沙盘推演的四个阶段
【6月更文挑战第8天】沙盘推演是基于实战攻防演练的一种评估方法,用于预估网络攻击对政企机构及公共安全可能造成的经济损失、声誉损失和社会影响。
|
人工智能 自然语言处理 前端开发
|
缓存 监控 安全
中间件在Python Web框架中的角色与应用场景
【7月更文挑战第21天】中间件在Python Web开发中作为服务器与应用间的软件层,拦截、处理请求和响应,无需改动应用代码。它扩展框架功能,复用跨应用逻辑,加强安全,优化性能。如Django中间件处理请求/响应,Flask通过WSGI中间件实现类似功能,两者均在不触及核心代码前提下,灵活增强应用行为,是现代Web开发关键组件。
282 0
|
编解码 Android开发 UED
安卓UI/UX设计原则:打造引人入胜的用户体验
【4月更文挑战第13天】本文探讨了安卓UI/UX设计的关键原则,包括一致性、简洁性、反馈、清晰性、效率和适应性。一致性要求视觉和行为保持一致,利用系统UI;简洁性减少用户行动,简化导航;反馈需即时且明确;清晰性强调表达清晰,布局有序;效率关注性能优化和任务简化;适应性涉及多设备适配和用户多样性。遵循这些原则,可创建出色应用,提供无缝用户体验。设计应持续迭代,适应技术发展和用户需求。
565 6
|
存储 小程序 开发工具
【Excel VBA 从入门到出门】一、Excel VBA 是个啥?
【Excel VBA 从入门到出门】一、Excel VBA 是个啥?
804 2
|
开发者 iOS开发
iOS App上架新规解析:如何进行App备案
iOS App上架新规解析:如何进行App备案
2627 0