最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

jQuery实现跨域iframe接口方法调用_jquery

来源:动视网 责编:小采 时间:2020-11-27 21:35:38
文档

jQuery实现跨域iframe接口方法调用_jquery

jQuery实现跨域iframe接口方法调用_jquery:cross.js 代码如下: (function(global){ global.Cross = { signalHandler: {}, on: function(signal, func){ this.signalHandler[signal] = func; }, call: function(win, domain, signal, data,
推荐度:
导读jQuery实现跨域iframe接口方法调用_jquery:cross.js 代码如下: (function(global){ global.Cross = { signalHandler: {}, on: function(signal, func){ this.signalHandler[signal] = func; }, call: function(win, domain, signal, data,


cross.js

代码如下:
(function(global){
global.Cross = {
signalHandler: {},
on: function(signal, func){
this.signalHandler[signal] = func;
},
call: function(win, domain, signal, data, callbackfunc){
var notice = {"signal": signal, "data": data};
if(!!callbackfunc){
notice["callback"] = "callback_" + new Date().getTime();
Cross.on(notice["callback"], callbackfunc);
}
var noticeStr = JSON.stringify(notice);
win.postMessage(noticeStr, domain);
}
};
$(window).on("message", function(e) {
var realEvent = e.originalEvent,
data = realEvent.data,
swin = realEvent.source,
origin = realEvent.origin,
protocol;
try {
protocol = JSON.parse(data);
var result = global.Cross.signalHandler[protocol.signal].call(null, protocol.data);
if(!!protocol["callback"]){
Cross.call(swin, origin, protocol["callback"], {result: result});
}
if(/^callback_/.test(protocol.signal)){
delete Cross.signalHandler[protocol.signal];
}
} catch (e) {
console.log(e);
throw new Error("cross error.");
}
});
})(window);

a.html

代码如下:






function call_b(){
var ifw = $("#ifr")[0].contentWindow;
//调用iframe子页面的公开的test接口, 子页面域名为http://localhost:8088
Cross.call(ifw,"http://localhost:8088","test",{t: $("#txt").val()});
}





http://localhost:8088/b.html">


b.html

代码如下:






//对外公开一个接口命名为test
Cross.on("test", function(data){
alert(data.t);
});





文档

jQuery实现跨域iframe接口方法调用_jquery

jQuery实现跨域iframe接口方法调用_jquery:cross.js 代码如下: (function(global){ global.Cross = { signalHandler: {}, on: function(signal, func){ this.signalHandler[signal] = func; }, call: function(win, domain, signal, data,
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top