Javascript使用HTML5的window.postmessage实施跨域通信的例子

Javascript使用HTML5的window.postmessage实施跨域通信的例子
由于同源策略的局限性,Javascript一直是跨域通信中的难题,当然也有很多解决方案。
1设置文档。域+ iframe应用于同一主域和子域是不同的。
2。使用iframe和location.hash,数据直接暴露在URL中,有限的数据容量和类型
3。Flash LocalConnection,对象可以在SWF文件或多个SWF文件之间的沟通,只要

在同一个客户机上,可以跨应用程序,并且可以跨域。
window.name保存数据和跨域iframe静态代理动态传输方案,充分利用window.name不会改变,因为页面的URL变化特征。
网上有很多代码的例子,你可以自己搜索

One of the most cool API in HTML5: Cross Document is a cross document messaging Messaging.Advanced browsers Internet Explorer 8+, chrome, Firefox, Opera, and Safari will support this feature.The implementation of this function is also very simple, mainly including the message events that accept information and the postMessage method for sending messages.

发送消息发送消息的方法

将消息发送到外部窗口:
复制代码代码如下:otherwindow.postmessage(消息,targetorigin);
otherwindow:指目标窗口,并发送消息给窗口,window.frames的成员属性或由window.open方法创建窗口
参数描述:
1.message:是要发送的消息,字符串类型,对象(IE8,9不支持
2.targetorigin:是新闻有限的接收范围,请使用*是不受限制的

消息事件接收信息

复制代码代码如下所示:
无功控制=函数(事件){
VaR数据= event.data;
var = event.origin起源;
/ /做
};
如果(typeof window.addeventlistener!= 'undefined){
Window.addEventListener(消息、消息、假);
} else if(typeof window.attachevent!= 'undefined){
IE浏览
window.attachevent('onmessage消息);
}
回调函数的第一个参数接收事件对象,它有三个公共属性:
1.data:消息
2.origin:报文的源地址
3.source:源domwindow对象

当然,PostMessage也有一些不足,太。
数据类型值通过1.ie8 IE9支持字符串类型,但是你可以通过将JSON对象和字符串的解决这个问题。
2.ie6,IE7兼容方案需要写,我想window.name更可靠。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部