你的位置:首页 > 软件开发 > Java > 实现跨域iframe接口方法调用 简单介绍

实现跨域iframe接口方法调用 简单介绍

发布时间:2015-07-21 13:00:14
实现跨域iframe接口方法调用 简单介绍:页面a.html域名为www.a.com,嵌入页面http://www.b.com/b.html.b.html要调用a.html中的js函数,由于两个页面不在一个域中,会提示没权限。下面就介绍一下如何如何解决此问题,需要的朋友可以做一下 ...

实现跨域iframe接口方法调用 简单介绍:

页面a.html域名为www.a.com,嵌入页面http://www.b.com/b.html.

b.html要调用a.html中的js函数,由于两个页面不在一个域中,会提示没权限。

下面就介绍一下如何如何解决此问题,需要的朋友可以做一下参考。

一.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);

原标题:实现跨域iframe接口方法调用 简单介绍

关键词:接口

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。