您现在的位置是:网站首页> 编程资料编程资料
使用iframe+postMessage实现页面跨域通信的示例代码详解使用postMessage解决iframe跨域通信问题关于iframe跨域使用postMessage的实现使用postMessage让 iframe自适应高度的方法示例
2021-08-30
1294人已围观
简介 这篇文章主要介绍了使用iframe+postMessage实现页面跨域通信的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
通常情况下,对于两个不同页面的脚本,只有当执行它们的页面位于具有相同的协议(通常为https),端口号(443为https的默认值),以及主机时,这两个脚本才能相互通信。而在实际项目开发过程中,经常会利用iframe在一个父页面中嵌入另外一个子页面,或者在一个父页面中弹出另一个页面,由于同源策略的限制,父子页面之间的脚本无法实现通信,而使用postMessage方法就实现了父子页面之间的跨域信息传递。
语法:
otherWindow.postMessage(message, targetOrigin, [transfer]);
otherWindow:其他页面的引用,例如,iframe的contentWindow属性,或者执行window.open返回的窗口对象。
message:将要传递到另一个页面的数据(可以不受限制的将数据对象安全的传送给目标窗口而无需自己序列化,原因是因为采用了结构化克隆算法)。
targetOrigin:通过窗口的origin属性来指定哪些窗口能接收到消息事件,其值可以是一个字符串"*"(表示无限制)或者一个Url。只有当目标窗口的协议、主机地址、端口号和targetOrigin完全匹配时,目标窗口才会收到message信息。为了防止信息泄露,通常情况下都会指定特定的url。
transfer:可选参数。
使用方法:
1.父页面:(url为http://www.b.com/main.html):
父页面
2.子页面(url为http://www.a.com/iframepage.html)
子页面 这里是子页面
postMessage方法被调用时,会在所有页面脚本执行完毕之后像目标窗口派发一个 MessageEvent 消息,该MessageEvent消息有四个属性需要注意:
type:表示该message的类型
data:为postMessage的第一个参数
origin:表示调用postMessage方法窗口的源
source:记录调用postMessage方法的窗口对象
特别注意:
1.一定要等A页面嵌入的B页面加载完成之后,再进行postMessage跨域通信
2.一定要对origin做判断,去掉不是来自我们目标窗口的origin,防止来自其他origin的攻击
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
相关内容
- Html5跳转到APP指定页面的实现HTML5 History API 实现无刷新跳转
- html5自动播放mov格式视频的实例代码html5 video全屏播放/自动播放的实现示例html5中嵌入视频自动播放的问题解决解决HTML5中的audio在手机端和微信端的不能自动播放问题HTML5 解决苹果手机不能自动播放音乐问题有关HTML5中背景音乐的自动播放功能HTML5页面音视频在微信和app下自动播放的实现方法HTML5页面音频自动播放的实现方式
- html5响应式开发自动计算fontSize的方法告别硬编码让你的前端表格自动计算的实例代码
- html5 制作地图当前定位箭头的方法示例html5实现点击弹出图片功能html5 录制mp3音频支持采样率和比特率设置html5表单的required属性使用html5调用摄像头实例代码HTML5页面音频自动播放的实现方式Html5大屏数据可视化开发的实现html实现弹窗的实例HTML5来实现本地文件读取和写入的实现方法HTML 罗盘式时钟的实现HTML5简单实现添加背景音乐的几种方法
- 详解HTML5 Canvas标签及基本使用html5移动端自适应布局的实现吃透移动端 Html5 响应式布局HTML5 通过Vedio标签实现视频循环播放的示例代码HTML5中在title标题标签里设置小图标的方法html5用video标签流式加载的实现html5自定义video标签的海报与播放按钮功能详解HTML5布局和HTML5标签
- HTML5自定义mp3播放器源码HTML5实时语音通话聊天MP3压缩传输3KB每秒html5 录制mp3音频支持采样率和比特率设置
- html5 canvas手势解锁源码分享解锁canvas导出图片跨域的N种姿势小结h5使用canvas画布实现手势解锁
- HTML5自定义视频播放器源码html5视频媒体标签video的使用方法及完整参数说明详解Html5实现首页动态视频背景的示例代码HTML5实现视频弹幕功能HTML5 视频播放(video),JavaScript控制视频的实例代码HTML5视频播放插件 video.js介绍
- 使用html2canvas实现将html内容写入到canvas中生成图片html2canvas生成的图片偏移不完整的解决方法html2canvas截图空白问题的解决html2 canvas生成清晰的图片实现打印功能html2canvas.js 实现页面截图html2 canvas svg不能识别的解决方案
- HTML5去掉输入框type为number时的上下箭头的实现方法html5实现输入框字数限制提示抖动效果HTML5为输入框添加语音输入功能的实现方法HTML输入框优化以此来提高用户体验和易用度HTML在透明输入框里添加图标的实现代码
