H5中怎样使用postMessage实现两个网页间传递数据


本文摘自PHP中文网,作者php中世界最好的语言,侵删。

这次给大家带来H5中怎样使用postMessage实现两个网页间传递数据,怎么用H5的postMessage实现两个网页间传递数据?postMessage两个网页间传递数据的注意事项有哪些,下面就是实战案例,一起来看一下。

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

数据发送端

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

//弹出一个新窗口  

var domain = 'http://scriptandstyle.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://scriptandstyle.com') return;  

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

},false);

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

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

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

阅读剩余部分

相关阅读 >>

html5中设置或返回音频/视频是否应该被静音的属性muted

html5中返回timeranges对象的属性buffered

html5地理位置定位geolocation-api及haversine地理空间距离算法(图文)

html5实现对话气泡点击动画

html5新增的表单控件和表单属性有哪些

分享一个html5实现拖放的实例代码

html5和css3分别是什么?

h5怎样用绘制五角星

html5用什么工具开发

妙味课堂html5视频资料分享

更多相关阅读请进入《postmessage》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...