返回顶部
首页 > 资讯 > 前端开发 > html >HTML5中怎么实现两个网页间传递数据
  • 487
分享到

HTML5中怎么实现两个网页间传递数据

2024-04-02 19:04:59 487人浏览 安东尼
摘要

本篇内容介绍了“HTML5中怎么实现两个网页间传递数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!估计很

本篇内容介绍了“HTML5中怎么实现两个网页间传递数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

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

数据发送端

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

javascript Code复制内容到剪贴板

  1. //弹出一个新窗口   

  2. var domain = 'Http://scriptandstyle.com';   

  3. var myPopup = window.open(domain    

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

  5.   

  6. //周期性的发送消息   

  7. setInterval(function(){   

  8.  var message = 'Hello!  The time is: ' + (new Date().getTime());   

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

  10.         //send the message and target URI   

  11.  myPopup.postMessage(message,domain);   

  12. },6000);   

  13.   

  14. //监听消息反馈   

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

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

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

  18. },false);   

  19.   

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

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

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

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

JavaScript Code复制内容到剪贴板

  1. //捕获iframe   

  2. var domain = 'http://scriptandstyle.com';   

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

  4.   

  5. //发送消息   

  6. setInterval(function(){   

  7.  var message = 'Hello!  The time is: ' + (new Date().getTime());   

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

  9.         //send the message and target URI   

  10.  iframe.postMessage(message,domain);    

  11. },6000);   

  12.   

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

数据接收端

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

JavaScript Code复制内容到剪贴板

  1. //响应事件   

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

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

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

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

  6. },false);   

  7.   

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

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

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

使用window.postMessage

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

“HTML5中怎么实现两个网页间传递数据”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: HTML5中怎么实现两个网页间传递数据

本文链接: https://lsjlt.com/news/78207.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作