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);
}
相关文章
|
数据可视化 关系型数据库 MySQL
2023年职业院校技能大赛中职组----大数据应用与服务赛项任务书试题
2023年职业院校技能大赛中职组----大数据应用与服务赛项任务书试题
1519 0
|
存储 网络安全 文件存储
内网穿透:实现公网访问内网群晖NAS的方法
内网穿透:实现公网访问内网群晖NAS的方法
|
编解码 JSON 自然语言处理
通义千问重磅开源Qwen2.5,性能超越Llama
击败Meta,阿里Qwen2.5再登全球开源大模型王座
7434 19
|
机器学习/深度学习 算法 安全
【强化学习应用(八)】基于Q-learning的无人机物流路径规划研究(Python代码实现)
【强化学习应用(八)】基于Q-learning的无人机物流路径规划研究(Python代码实现)
860 6
|
机器学习/深度学习 自然语言处理 搜索推荐
承上启下:基于全域漏斗分析的主搜深度统一粗排
两阶段排序(粗排-精排)一开始是因系统性能问题提出的排序框架,因此长期以来粗排的定位一直是精排的退化版本,业内的粗排的优化方向也是持续逼近精排。我们提出以全域成交的hitrate为目标的全新指标,重新审视了召回、粗排和精排的关系,指出了全新的优化方向
94943 3
|
NoSQL 关系型数据库 MySQL
探索Sun-Panel:一站式服务器、NAS导航面板、Homepage、浏览器首页
Sun-Panel是一款开源的浏览器导航页解决方案,旨在提供一种可私有化部署的综合体验,融合服务器、NAS管理和首页功能。与市面其他未开源的导航插件不同,Sun-Panel允许用户自定义JS和CSS,支持Docker部署(包括Arm系统)和多账号隔离。通过docker-compose进行简单部署,用户可选择SQLite或配置MySQL、Redis。默认账号为admin@sun.cc,密码12345678。该项目提供了一个更简洁、高效的网页管理工具,以适应数字化时代的需求。
3186 5
探索Sun-Panel:一站式服务器、NAS导航面板、Homepage、浏览器首页
攻防演练中沙盘推演的四个阶段
【6月更文挑战第8天】沙盘推演是基于实战攻防演练的一种评估方法,用于预估网络攻击对政企机构及公共安全可能造成的经济损失、声誉损失和社会影响。
|
编解码 Android开发 UED
安卓UI/UX设计原则:打造引人入胜的用户体验
【4月更文挑战第13天】本文探讨了安卓UI/UX设计的关键原则,包括一致性、简洁性、反馈、清晰性、效率和适应性。一致性要求视觉和行为保持一致,利用系统UI;简洁性减少用户行动,简化导航;反馈需即时且明确;清晰性强调表达清晰,布局有序;效率关注性能优化和任务简化;适应性涉及多设备适配和用户多样性。遵循这些原则,可创建出色应用,提供无缝用户体验。设计应持续迭代,适应技术发展和用户需求。
983 6
|
人工智能
通义千问大模型价格直线下调,优惠升级!更有新用户限时免费领取3600万额度!
通义大模型全线9款直降,最高达97%,阿里云MaaS(模型即服务)让推理成本大幅降低,加速AI应用爆发。 即刻登录阿里云百炼官网https://bailian.aliyun.com调用体验,新用户免费限时赠送3600万tokens!
3922 3

热门文章

最新文章