• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > H5中怎样使用postMessage实现两个网页间传递数据

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

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含postMessage,html5,两个等相关知识,匿名希望在学习及工作中可以帮助到您
这次给大家带来H5中怎样使用postMessage实现两个网页间传递数据,怎么用H5的postMessage实现两个网页间传递数据?postMessage两个网页间传递数据的注意事项有哪些,下面就是实战案例,一起来看一下。

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

数据发送端

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

//弹出一个新窗口   
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!只有在目标方合法的情况才你才能处理它发来的消息。

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

//捕获iframe   
var domain = 'http://scriptandstyle.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属性,而不是节点对象。

数据接收端

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

//响应事件   
window.addEventListener('message',function(event) {   
 if(event.origin !== 'http://davidwalsh.name') return;   
 console.log('message received:  ' + event.data,event);   
 event.source.postMessage('holla back youngin!',event.origin);   
},false);

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

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

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

使用window.postMessage

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


相信看了这些案例你已经掌握了方法,更多精彩请关注微课江湖其它相关文章!

相关阅读:

vue.js做出图书管理平台的详细步骤

bootstrap里如何统计table sum的数量

怎么用JS做出按钮禁用和启用

以上就是H5中怎样使用postMessage实现两个网页间传递数据的详细内容,更多请关注微课江湖其它相关文章!

您可能想查找下面的文章:

  • 详解HTML5 window.postMessage与跨域
  • html5 postMessage解决跨域、跨窗口消息传递方案
  • HTML5中使用postMessage实现两个网页间传递数据
  • html5跨域通讯之postMessage的用法总结
  • Html5 postMessage实现跨域消息传递
  • HTML5中使用postMessage实现Ajax跨域请求的方法
  • HTML5中的postMessage API基本使用教程
  • 详解html5 postMessage解决跨域通信的问题
  • Html5中postmessage实现子父窗口传值的代码
  • H5的window.postMessage与跨域

相关文章

  • 2018-12-03如何用最简洁形象的语言解释什么是HTTP协议中的头域(header)?
  • 2018-12-03移动端html5 meta标签的神奇功效_html5教程技巧
  • 2018-12-03h5的移动端适配怎样实现
  • 2018-12-03HTML5各引擎显示效率比较
  • 2017-08-06使用HTML5拍照示例代码
  • 2017-08-06html5使用canvas画三角形
  • 2018-12-03Html5实现iPhone开机界面示例代码_html5教程技巧
  • 2018-12-03HTML5每日一练之Canvas标签的应用
  • 2017-08-06Html5大文件断点续传实现方法
  • 2018-12-03HTML5实践-CSS3 Media Queries详情介绍

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • 7个步骤:让JavaScript变得更好
    • 整理HTML5中支持的URL编码与字符编码
    • html5 跨文档消息传输示例探讨
    • h5实现放大镜效果的代码
    • 基于HTML5 audio元素播放声音jQuery小插件
    • canvas需要在标签里直接定义宽高_html5教程技巧
    • html5多图片预览上传及点击可拖拽控件的实例分享
    • HTML块级标签汇总(小篇)
    • HTML5 video标签(播放器)学习笔记(二):播放控制
    • 腾讯为什么要做网页版微信?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有