html post 两个页面,HTML5中使用postMessage实现两个网页间传递数据(

本文详细介绍了如何使用HTML5的window.postMessage API在两个不同窗口或iframe之间进行数据传递。通过创建消息源并设置定时发送,以及添加事件监听器接收响应,实现了跨域的数据通信。需要注意的是,必须验证消息的来源URI以确保安全性。此功能适用于所有主流浏览器,除了IE6和IE7。示例代码包括创建新窗口或iframe,并周期性地发送和接收消息。
摘要由CSDN通过智能技术生成

原标题:HTML5中使用postMessage实现两个网页间传递数据(

这篇文章主要为大家详细介绍了利用HTML5里的window.postMessage在两个 网页间传递数据的相关资料,postMessage API的功能是可以让你在两个浏览器窗口或iframe之间传递信息数据,对postMessage感兴趣的小伙伴们可以参考一下。

估计很少人知道HTML5 APIS里有一个window.postMessage API.window.postMessage的功能是允许程序员跨域在两个窗口/frames间发送数据信息。基本上,它就像是跨域的AJAX,但不是 浏览器跟服务器之间交互,而是在两个客户端之间通信。让我们来看一下window.postMessage是如何工作的。除了IE6、IE7之外的所有浏 览器都支持这个功能。

数据发送端

首先我们要做的是创建通信发起端,也就是数据源“source”。作为发起端,我们可以open一个新窗口,或创建一个iframe,往新窗口里发送数据,简单起见,我们每6秒钟发送一次,然后创建消息监听器,从目标窗口监听它反馈的信息。

//弹出一个新窗口

var domain = 'http://andstyle.com';

var myPopup = window.open(domain

+ '/windowPostMessageListener.html','myWindow');

//周期性的发送消息

setInterval(function(){

var message = 'Hello! The time is: ' + (new Date().getTime());

console.log('blog.local: sending message: ' + message);

//send the message and target URI

myPopup.postMessage(message,domain);

},6000);

//监听消息反馈

window.addEventListener('message',function(event) {

if(event.origin !== 'http://andstyle.com') return;

console.log('received response: ',event.data);

},false);

这里我使用了window.addEventListener,但在IE里这样是不行的,因为IE使用window.attachEvent.如果你不想判断浏览器的类型,可以使用一些工具库,比如jQuery或Dojo.

假设你的窗口正常的弹出来了,我们发送一条消息——需要指定URI(必要的话需要指定协议、主机、端口号等),消息接收方必须在这个指定的URI上。如果目标窗口被替换了,消息将不会发出。

我们同时创建了一个事件监听器来接收反馈信息。有一点极其重要,你一定要验证消息的来源的URI!只有在目标方合法的情况才你才能处理它发来的消息。

如果是使用iframe,代码应该这样写:

//捕获iframe

var domain = 'http://andstyle.com';

var iframe = document.getElementById('myIFrame').contentWindow;

//发送消息

setInterval(function(){

var message = 'Hello! The time is: ' + (new Date().getTime());

console.log('blog.local: sending message: ' + message);

//send the message and target URI

iframe.postMessage(message,domain);

},6000);

确保你使用的是iframe的contentWindow属性,而不是节点对象。

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值