首页 > 作文

HTML5中使用postMessage实现两个网页间传递数据

更新时间:2023-04-06 13:12:39 阅读: 评论:0

估计很少人知道html5 apis里有一个window.postmessage api。window.postmessage的功能是允许程序员跨域在两个窗口/frames间发送数据信息。基本上,它就像是跨域的ajax,但不是浏览器跟服务器之间交互,而是在两个客户端之间通信。让我们来看一下window.postmessag女生饮食健康知识e是如何工作的。除了ie6、ie7之外的所有浏览器都支持这个功能。

数据发送端

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

javascript code
复制内容到剪贴板

//弹出一个新窗口 vardomain=‘http://scriptandstyle.com’; varmypopup=window.open(domain +‘/windo古尔邦节2021放假通知wpostmessagelistener.html’,‘mywindow&#作文五年级上册8217;); //周期性的发送消息 tinterval(function(){ varmessage=‘hello!thetimeis:‘+(newdate().gettime()); console.log(‘blog.local:ndingmessage:‘+message); //ndthemessageandtargeturi mypopup.postmessage(message,domain); },6000); //监听消息反馈 window.add解放思想心得体会eventlistener(‘message’,function(event){ if(event.origin!==‘http://scriptandstyle.com’)return; console.log(‘receivedrespon:‘,event.data); },fal);

这里我使用了window.addeventlistener,但在ie里这样是不行的,因为ie使用window.attachevent。如果你不想判断浏览器的类型,可以使用一些工具库,比如jquery或dojo。

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

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

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

javascript code
复制内容到剪贴板

//捕获iframe vardomain=‘http://scriptandstyle.com’; variframe=document.getelementbyid(‘myiframe’).contentwindow; //发送消息 tinterval(function(){ varmessage=‘hello!thetimeis:‘+(newdate().gettime()); console.log(‘blog.local:ndingmessage:‘+message); //ndthemessageandtargeturi 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); },fal);

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

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

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

使用window.postmessage

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。

本文发布于:2023-04-06 13:12:37,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/4c0c37ca474dd5f87f98f5bea6b5b117.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:HTML5中使用postMessage实现两个网页间传递数据.doc

本文 PDF 下载地址:HTML5中使用postMessage实现两个网页间传递数据.pdf

标签:消息   的是   数据   窗口
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图