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

HTML5新特性之跨文档消息传输详解

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

本文主要包含HTML5,跨文档,消息传输等相关知识,匿名希望在学习及工作中可以帮助到您

1、同域限制

所谓“同域限制”是指,出于http:///wiki/397.html" target="_blank">安全考虑,浏览器只允许脚本与同样协议、同样域名、同样端口的地址进行通信。

2、window.postMessage方法

浏览器限制不同窗口(包括iFrame窗口)之间的通信,除非两个窗口装载的是同一个域名下的网页。window.postMessage方法就是为了解决这个问题而特定的API,可以让不同域名的窗口互相通信。

postMessage方法的格式如下:

targetWindow.postMessage(message, targetURL[, transferObject]);

上面代码的targetWindow是指向目标窗口的变量,message是要发送的消息,targetURL是指定目标窗口的网址,不符合该网址就不发送信息,transferObject则是跟随信息一起发送的Transferable对象。

假定当前网页弹出一个新窗口。

var popup = window.open(...popup details ...);

然后在当前网页上监听message事件。

window.addEventListener('message', receiveMessage, false);
function receiveMessage(e) {    
if (e.origin != 'http://example.org') {        
return;
    }

    console.log(e.data);
}

上面的代码指定message事件的回调函数是receiveMessage,一旦收到其他窗口发来的信息,receiveMessage函数就会被调用。receiveMessage函数接受一个event事件对象作为参数,该参数里的origin属性表示信息的来源网址,如果该网址不符合要求,就立刻返回。event.data属性则包含了实际发送过来的信息。

event对象的属性除了origin和data,还有一个source属性,指向向当前网页发送信息的窗口对象。

接着,在当前网页上使用postMessage方法对新窗口发送信息。

popup.postMessage('hello world!', 'http://example.org');

上面代码的postMessage方法的第一个参数是实际发送的信息,第二个参数是指定发送对象的域名必须是http://example.org。如果对方窗口不是这个域名,信息不会发送出去。

最后,在popup窗口中部署下面的代码。

//popup 窗口function receiveMessage(event) {
    event.source.postMessage('Nice to see you!', '*');
}

window.addEvengtListener('message', receiveMessage, false);

上面代码有几个地方需要注意。首先,receiveMessage函数里面没有过滤信息的来源,任意网址发来的信息都会被处理。其次,postMessage方法中指定的目标窗口的网址是一个星号,表示该信息可以向任意网址发送。通常来说,这两种做法是不推荐的,因为不够安全,可能会被对方过滤掉。

所有浏览器都支持这个方法,但是IE8和IE9只允许postMessage方法与iFrame窗口通信,不能与新窗口通信。IE10允许与新窗口通信,但是只能使用IE特有的MessageChannel对象

以上就是HTML5新特性之跨文档消息传输详解的详细内容,更多请关注微课江湖其它相关文章!

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

  • HTML5知识点总结
  • HTML5的本地存储
  • HTML5本地存储之IndexedDB
  • Html5实现文件异步上传功能
  • Html5新标签datalist实现输入框与后台数据库数据的动态匹配
  • 详解HTML5 window.postMessage与跨域
  • HTML5拖放API实现拖放排序的实例代码
  • 解决html5中video标签无法播放mp4问题的办法
  • HTML5新特性 多线程(Worker SharedWorker)
  • Html5新增标签有哪些

相关文章

  • 2018-12-03利用HTML5中的Canvas绘制笑脸的代码
  • 2018-12-03关于Vue Admin的详细介绍
  • 2018-12-03html5 迷宫游戏(碰撞检测)实例一_html5教程技巧
  • 2018-12-03基于HTML5的Web SCADA报表图文代码详解
  • 2018-12-03html5定位获取当前位置并在百度地图上显示_html5教程技巧
  • 2018-12-03HTML5组件Canvas实现图像灰度化(步骤+实例效果)
  • 2018-12-03易企秀、兔展类似的在微信上传播的H5微场景制作软件还有哪些?
  • 2018-12-03有关HTML5 Video对象的ontimeupdate事件(Chrome上无效)的问题 _html5教程技巧
  • 2017-08-06使用 HTML5 Canvas 制作水波纹效果点击图片就会触发
  • 2018-12-03html5游戏开发-简单老虎机

文章分类

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

最近更新的内容

    • html5 canvas画图实例用法汇总
    • html5实现完美兼容各大浏览器的播放器
    • 怎么使用Canvas绘制虚线
    • 利用HTML5 Canvas制作一个简单的打飞机游戏_html5教程技巧
    • HTML5单页面手势滑屏切换原理
    • HTML最新标准HTML5总结
    • html5容易被忽略的小知识
    • 如何升级H5混合开发的app
    • li inside-block在IE11换行无效的原因
    • HTML5 visibilityState属性详细介绍和使用实例_html5教程技巧

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

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