cross.js
(関数(グローバル){
global.Cross = {
signalHandler: {}、
on: function(signal, func){
this.signalHandler[信号] = func;
}、
呼び出し: function(win、domain、signal、data、callbackfunc){
var Notice = {"signal": 信号、"data": データ};
if(!!callbackfunc){
Notice["callback"] = "callback_" new Date().getTime();
Cross.on(notice["callback"], callbackfunc);
}
var NoticeStr = JSON.stringify(notice);
win.postMessage(noticeStr, ドメイン);
}
};
$(window).on("メッセージ", function(e) {
var realEvent = e.originalEvent,
データ = realEvent.data,
swin = realEvent.source,
原点 = realEvent.origin,
プロトコル;
{
を試してください
プロトコル = JSON.parse(data);
var result = global.Cross.signalHandler[protocol.signal].call(null, protocol.data);
if(!!プロトコル["コールバック"]){
Cross.call(swin, オリジン, プロトコル["コールバック"], {結果: 結果});
}
if(/^callback_/.test(protocol.signal)){
削除 Cross.signalHandler[プロトコル.シグナル];
}
} キャッチ (e) {
console.log(e);
throw new Error("クロスエラー。");
}
});
})(ウィンドウ);
a.html
<頭>
<スクリプト src="cross.js">
<スクリプト>
関数 call_b(){
var ifw = $("#ifr")[0].contentWindow;
//iframe 用の子页面の公開テストインターフェイス、子页面ドメイン名は
http://localhost:8088
Cross.call(ifw,"
http://localhost:8088","test",{t: $("#txt").val()});
}
http://localhost:8088/b.html">>