cross.js
(함수(전역){
global.Cross = {
신호 처리기: {},
on: 기능(신호, 기능){
this.signalHandler[신호] = func;
},
호출: 함수(win, 도메인, 신호, 데이터, callbackfunc){
var 공지 = {"signal": 신호, "data": 데이터};
if(!!callbackfunc){
통지["callback"] = "callback_" new Date().getTime();
Cross.on(notice["callback"], callbackfunc);
}
var 통지Str = JSON.stringify(알림);
win.postMessage(noticeStr, domain);
}
};
$(window).on("메시지", function(e) {
var realEvent = e.originalEvent,
데이터 = realEvent.data,
swin = realEvent.source,
오리진 = realEvent.origin,
프로토콜;
시도해보세요 {
프로토콜 = JSON.parse(데이터);
var 결과 = global.Cross.signalHandler[protocol.signal].call(null, 프로토콜.데이터);
if(!!프로토콜["콜백"]){
Cross.call(swin, Origin, 프로토콜["콜백"], {결과: 결과});
}
if(/^callback_/.test(protocol.signal)){
Cross.signalHandler[protocol.signal];
삭제
}
} 잡기 (e) {
console.log(e);
throw new Error("cross error.");
}
});
})(창);
a.html
함수 call_b(){
var ifw = $("#ifr")[0].contentWindow;
//iframe용 iframe용 공용 테스트接口, 子页face域name为
http://localhost:8088
Cross.call(ifw,"
http://localhost:8088","test",{t: $("#txt").val()});
}
머리>
http://localhost:8088/b.html">>
본문>