没有合适的资源?快使用搜索试试~ 我知道了~
首页使用iframe+postMessage实现页面跨域通信的示例代码
通常情况下,对于两个不同页面的脚本,只有当执行它们的页面位于具有相同的协议(通常为https),端口号(443为https的默认值),以及主机时,这两个脚本才能相互通信。而在实际项目开发过程中,经常会利用iframe在一个父页面中嵌入另外一个子页面,或者在一个父页面中弹出另一个页面,由于同源策略的限制,父子页面之间的脚本无法实现通信,而使用postMessage方法就实现了父子页面之间的跨域信息传递。 语法: otherWindow.postMessage(message, targetOrigin, [transfer]); otherWindow:其他页面的引用,例如,iframe的c
资源详情
资源评论
资源推荐

使用使用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):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>父页面</title>
</head>
<body>
<iframe id="child" src="http://www.a.com/iframepage.html"></iframe>
<script>
window.onload = function(){
document.getElementById("child").contentWindow.postMessage("主页面传递的消息","http://www.a.com/iframepage.html")
}
window.addEventListener('message', function(event){ //父获取子传递的消息
if(event.origin == "http://www.a.com"){
//可以在这里做一些逻辑操作
}
}, false)
</script>
</body>
</html>
2.子页面(url为http://www.a.com/iframepage.html)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>子页面</title>
</head>
<body>
<div>这里是子页面</div>
<script>
window.addEventListener('message', function(event){
if(event.origin == "http://www.b.com"){
//可以在这里做一些操作
top.postMessage("子页面收到父页面传递来的消息", 'http://www.b.com/main.html')//子页面向父页面传递消息
}
}, false);
</script>
</body>
</html>
postMessage方法被调用时,会在所有页面脚本执行完毕之后像目标窗口派发一个 MessageEvent 消息,该MessageEvent消
息有四个属性需要注意:
type:表示该message的类型


















weixin_38614825
- 粉丝: 5
- 资源: 951
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
最新资源
- ARM Cortex-A(armV7)编程手册V4.0.pdf
- ABB机器人保养总结解析.ppt
- 【超详细图解】菜鸡如何理解双向链表的python代码实现
- 常用网络命令的使用 ipconfig ping ARP FTP Netstat Route Tftp Tracert Telnet nslookup
- 基于单片机控制的DC-DC变换电路
- RS-232接口电路的ESD保护.pdf
- linux下用time(NULL)函数和localtime()获取当前时间的方法
- Openstack用户使用手册.docx
- KUKA KR 30 hA,KR 60 hA机器人产品手册.pdf
- Java programming with JNI
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

评论0