实现跨域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
(#换成@)。