H5里的postMessage API图文详解 详细介绍


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

关于postMessage,虽然说是html5的功能但是支持IE8+,假如你的网站不需要支持IE6和IE7,那么可以使用window.postMessage。既可以跨域传递,也可以同域传递。

我只是简单的举一个应用场景,当然,这个功能很多地方可以使用。

假如你有一个页面,页面中拿到部分用户信息,点击进入另外一个页面,另外的页面默认是取不到用户信息的,你可以通过window.postMessage把部分用户信息传到这个页面中。(当然,你要考虑安全性等方面。)

代码举例

发送信息:

JavaScript Code复制内容到剪贴板

1

2

3

4

5

6

7

8

9

10

11

12

//弹出一个新窗口  

var domain = 'https://haorooms.com';  

var myPopup = window.open(domain   

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

   

//周期性的发送消息  

setTimeout(function(){  

    //var message = '当前时间是 ' + (new Date().getTime());   

        var message = {name:"站点",sex:"男"}; //你在这里也可以传递一些数据,obj等  

    console.log('传递的数据是  ' + message);  

    myPopup.postMessage(message,domain);  

},1000);

要延迟一下,我们一般用计时器setTimeout延迟再发用。

接受的页面

JavaScript Code复制内容到剪贴板

//监听消息反馈

1

2

3

4

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

    if(event.origin !== 'https://haorooms.com') return; //这个判断一下是不是我这个域名跳转过来的  

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

},false);

如下图,接受页面得到数据

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

JavaScript Code复制内容到剪贴板

1

2

3

4

5

6

7

8

9

10

11

12

//捕获iframe  

var domain = 'https://haorooms.com';  

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

   

//发送消息  

setTimeout(function(){  

    //var message = '当前时间是 ' + (new Date().getTime());   

        var message = {name:"站点",sex:"男"}; //你在这里也可以传递一些数据,obj等  

    console.log('传递的数据是:  ' + message);  

        //send the message and target URI  

    iframe.postMessage(message,domain);   

},1000);

接受数据

JavaScript Code复制内容到剪贴板

1

2

3

4

5

6

//响应事件  

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

    if(event.origin !== 'https://haorooms.com') return;  

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

    event.source.postMessage('holla back youngin!',event.origin);  

},false);

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

阅读剩余部分

相关阅读 >>

利用html5的一个特性- deviceorientation来实现手机上摇一摇功能

详细介绍精选html5/css3动画应用源码分享

h5的localstorage本地存储使用详解

5个有用的css函数(分享)

html5如何在手机端调用相机?

浅谈关于html5头部<meta>标签的小知识

js html5 canvas绘制图片的方法

自定义实现可以播放暂停、进度拖拽、音量控制及全屏的h5播放器

html5 地理定位

分享html5制作banner的实例

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




打赏

取消

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

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

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

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

评论

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