An open API service indexing awesome lists of open source software.

https://github.com/jsaaron/pms

通过postMessage跨域通信插件
https://github.com/jsaaron/pms

Last synced: 11 months ago
JSON representation

通过postMessage跨域通信插件

Awesome Lists containing this project

README

          

pms
===

移动端iframe通信库

frame窗口通信指导
PMS 用于frame窗口之间通信
PMS对象暴露三个接口
bind : 用于注册事件,当有窗口发送消息过来并且类匹配时,则会触发注册时相应的回调函数
send : 用于向指定的目标窗口发送信息
unbind : 取消之肖注册的事件

使用demo
现在假设我们有两个frame窗口,一个是主窗口mainFrame ,一个是子窗口childFrame
现在我们得在两个frame窗口中进行消息传递,则我们可以像下面这样操作

1 、 mainFrame传递消息到childFrame
1.1 childFrame注册事件,在childFrame的js代码中
PMS.bind('onload' , function(e){} , '*')
此时childFrame已经注册了消息处理,当有窗口往childFrame消息事,此处注册的回调就会被执行
参数{onload : 消息类型 , function : 回调函数 , '*' : 消息通信的域}

1.2 此时子窗口已准备,等待其它窗口发送消息的到来
此时mainFrame给childFrame发送一个消息
此处写在mainFrame的代码中
PMS.send({
target : frames[0], //发送到目标窗口
url : //URL
type : 'onload' , //消息类型
data : { //附带数据
name : 'alice' ,
age : 27
},
success : function(){ //成功回调
},
error : function(e){ //失败回调
}
});

其它frame通信跟上面差不多,
多个frame之间也能相互通信,只要通信目标正确即可

如果是子窗口发信息给父窗口,则像下面之样即可
PMS.send({
target : window.parent
其它参数与上面相同
});

target : 必填
type : 必填
其它参数可选

参考
https://developer.mozilla.org/en-US/docs/DOM/window.postMessage

了解更多可分析下面源码