
又是可恶的布吕马 , 有啥人死在了 讲出你晓得的布吕马软件系统,圣埃卢瓦?那个复试难题上。
那时和我们说说,HTML5 提供更多的两个布吕马软件系统,Window.postMessage , 它足够多初学称心,会让你耳目一新。但常常绝大多数情形下,都不能让人始终笑下来,虽说魔高一丈魔高一丈,那个方式反之亦然也会被 HTTP 的许多协定所管制着,比如说 X-Frame-Options:SAMEORIGIN,但好在绝大多数情形下,情形不致那么差劲。上面步入自问自答:
Window.postMessage 提供更多了一类安全可靠的布吕马通信计划。
句法
句法分成两部份,发和收,只但都很单纯。
推送
otherWindow.postMessage( message , origin [ , transfer] )
布吕马的 window 第一类的提及,比如说 iframe、window.open 建立的第一类等。
推送给布吕马第一类的最新消息,能是 string、object、number等第一类
指定最新消息推送的域名,能使用通配符 *
接收
我们能监听 window 的 message 事件来获取到传递过来的值,例如:
接收到的event包含上面几个重要的属性:
传递过来的信息。
推送最新消息的域名,包含了协定和端口(如https://developer.mozilla.org:443),通常情形下 默认端口会被省略,例如https://www.google.com意味着省略了端口443 ,http://www.google.com省略了端口 80。
* source
推送数据的window的提及,例如b域名收到a域名的最新消息,此时的source指的是a域名的window,你能通过它来实现双向通信。
举例
好了,终于能举个例子了,(等等我的糖炒板栗呢?)
示例页面
http://jsbin.com/wecoqi
示例代码:
http://jsbin.com/wecoqi/9/edit?html,js
http://jsbin.com/qetuwicebo/9/edit?html,js
代码解释
用户打开A页面,点击 Open Window 按钮,打开两个新的B页面(由于资源有限,Demo 中用同域作为演示), 回到A页面点击 push message 按钮 ,推送你好到B页面,同时收到B页面的反馈。 这时候回到B页面,就能看到B页面的收到的最新消息了。
具体代码如下。
A页面
B页面