跨文档消息通信 HTML5

使用postMessageAPI

要想接受从其他的窗口那里发过来的信息,就必须对窗口对象的message时
间进行监视,代码如下所示。
window.addEventListener("message",function(){...},false);
使用window对象的postMessage方法向其他窗口发送信息,该方法的定义
如下所示。
otherWindow.postMessage(message,targetOrigin);
该方法使用两个参数;第一个参数为所发送的消息文本,但也可以是任何
javascript对象(通过JSON转换对象为文本);第二个参数为接收信息的对象
窗口的URL地址(例如http://localhost:8080/)。可以在URL地址字符串中
使用通配符“*”指定全部地址,不过,建议使用准确的URL地址。otherWindow为要发送窗口对象的引用,可以通过window.open返回该对
象,或通过对window.iframes数组指定序号(index)或名字的方式来返回单
个iframe所属的窗口对象。
主index.html:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>跨域通信示例</title>
<script type="text/javascript">
// 监听message事件
window.addEventListener("message", function(ev) {
  	//忽略指定URL地址之外的页面传过来的消息
  	//if(ev.origin != "http://127.0.0.1:8848") {
    //	return;
  	//}
  	//显示消息
  	alert("从" ev.origin   "那里传过来的消息:\n\""   ev.data   "\"");
}, false);
function hello(){
	var iframe = window.frames[0];
  	//传递消息
  	iframe.postMessage("您好!", "http://127.0.0.1:8848");
}
</script>
</head>
<body>
<h1>跨域通信示例</h1>
<iframe width="400" src="http://127.0.0.1:8848/iframe.html" οnlοad="hello()">
</iframe>
</body>
</html>

iframe.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript">
window.addEventListener("message", function(ev){
	if(ev.origin != "http://127.0.0.1:8848"){
		return;
	}
    document.body.innerHTML = "从" ev.origin   "那里传来的消息。<br>\""  ev.data   "\"";
    //向主页面发送消息
    ev.source.postMessage("珊瑚贝欢迎您!这里是"   this.location, ev.origin);
}, false);
</script>
</head>
<body></body>
</html>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值