html5 多选数据post,科技常识:HTML5中使用postMessage实现两个网页间传递数据

今天小编跟大家讲解下有关HTML5中使用postMessage实现两个网页间传递数据 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了有关HTML5中使用postMessage实现两个网页间传递数据 的相关资料,希望小伙伴们看了有所帮助。

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

数据发送端

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

JavaScript Code复制内容到剪贴板

//弹出一个新窗口

vardomain='http://scriptandstyle.com';

varmyPopup=window.open(domain

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

//周期性的发送消息

setInterval(function(){

varmessage='Hello!Thetimeis:'+(newDate().getTime());

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

//sendthemessageandtargetURI

myPopup.postMessage(message,domain);

},6000);

//监听消息反馈

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

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

console.log('receivedresponse:',event.data);

},false);

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

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

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

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

JavaScript Code复制内容到剪贴板

//捕获iframe

vardomain='http://scriptandstyle.com';

variframe=document.getElementById('myIFrame').contentWindow;

//发送消息

setInterval(function(){

varmessage='Hello!Thetimeis:'+(newDate().getTime());

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

//sendthemessageandtargetURI

iframe.postMessage(message,domain);

},6000);

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

数据接收端

下面我们要开发的是数据接收端的页面。接收方窗口里有一个事件监听器 监听“message”事件 一样 你也需要验证消息来源方的地址。消息可以来自任何地址 要确保处理的消息是来自一个可信的地址。

JavaScript Code复制内容到剪贴板

//响应事件

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

if(event.origin!=='http://davidwalsh.name')return;

console.log('messagereceived:'+event.data,event);

event.source.postMessage('hollabackyoungin!',event.origin);

},false);

上面的代码片段是往消息源反馈信息 确认消息已经收到。下面是几个比较重要的事件属性:

source – 消息源 消息的发送窗口/iframe。origin – 消息源的URI(可能包含协议、域名和端口) 用来验证数据源。data – 发送方发送给接收方的数据。

这三个属性是消息传输中必须用到的数据。

使用window.postMessage

跟其他很web技术一样 如果你不校验数据源的合法性 那使用这种技术将会变得很危险;你的应用的安全需要你对它负责。window.postMessage就像是PHP相对于JavaScript技术。window.postMessage很酷 不是吗

以上就是本文的全部内容 希望对大家的学习有所帮助 也希望大家多多支持爱蒂网。

来源:爱蒂网

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时候联系我们修改或删除,多谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值