jQuery實(shí)現(xiàn)跨域iframe接口方法調(diào)用
更新時(shí)間:2015年03月14日 10:53:58 投稿:hebedich
頁(yè)面a.html域名為www.a.com嵌入頁(yè)面http://www.b.com/b.html,b.html要調(diào)用a.html中的js函數(shù),由于兩個(gè)頁(yè)面不在一個(gè)域中,會(huì)提示沒(méi)權(quán)限。如何解決該問(wèn)題呢,請(qǐng)看下面示例代碼。
cross.js
復(fù)制代碼 代碼如下:
(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
復(fù)制代碼 代碼如下:
<!doctype HTML>
<html>
<head>
<script src="jquery-1.8.3.min.js"></script>
<script src="cross.js"></script>
<script>
function call_b(){
var ifw = $("#ifr")[0].contentWindow;
//調(diào)用iframe子頁(yè)面的公開的test接口, 子頁(yè)面域名為http://localhost:8088
Cross.call(ifw,"http://localhost:8088","test",{t: $("#txt").val()});
}
</script>
</head>
<body>
<input id="txt" type="text"/>
<button onclick="call_b()">call</button>
<iframe id="ifr" src="http://localhost:8088/b.html"></iframe>
</body>
</html>
b.html
復(fù)制代碼 代碼如下:
<!doctype HTML>
<html>
<head>
<script src="jquery-1.8.3.min.js"></script>
<script src="cross.js"></script>
<script>
//對(duì)外公開一個(gè)接口命名為test
Cross.on("test", function(data){
alert(data.t);
});
</script>
</head>
<body>
</body>
</html>
以上就是本文所述的iframe跨域的解決方案了,希望大家能夠喜歡。
您可能感興趣的文章:
- 解決同一頁(yè)面中兩個(gè)iframe互相調(diào)用jquery,js函數(shù)的方法
- Jquery調(diào)用iframe父頁(yè)面中的元素及方法
- jQuery基于ID調(diào)用指定iframe頁(yè)面內(nèi)的方法
- jQuery實(shí)現(xiàn)iframe父窗體和子窗體的相互調(diào)用
- jquery、js調(diào)用iframe父窗口與子窗口元素的方法整理
- 解析Jquery取得iframe中元素的幾種方法
- JQueryiframe頁(yè)面操作父頁(yè)面中的元素與方法(實(shí)例講解)
- jquery 操作iframe的幾種方法總結(jié)
- js與jQuery 獲取父窗、子窗的iframe
- Jquery方式獲取iframe頁(yè)面中的 Dom元素
- jQuery實(shí)現(xiàn)frame之間互通的方法
相關(guān)文章
jquery css 設(shè)置table的奇偶行背景色示例
jquery css 設(shè)置table的奇偶行背景色2014-06-06jQuery UI 實(shí)現(xiàn)email輸入提示實(shí)例
本文為大家介紹下使用jQuery UI 實(shí)現(xiàn)email輸入提示,具體思路如下,感興趣的朋友可以參考下2013-08-08JQuery學(xué)習(xí)筆記 實(shí)現(xiàn)圖片翻轉(zhuǎn)效果和TAB標(biāo)簽切換效果
為了保證前臺(tái)頁(yè)面的整潔,我們習(xí)慣性地將CSS放入一個(gè)單獨(dú)的.CSS文件中以便調(diào)用,而JS也同樣可以放到單獨(dú)的JS文件中去,并且頁(yè)面上的事件如onclick,onmouseover也可以分離出來(lái),現(xiàn)在網(wǎng)上比較流行JQuery2008-11-11移動(dòng)端jQuery修正Web頁(yè)面滑動(dòng)時(shí)div問(wèn)題的兩則實(shí)例
這篇文章主要介紹了移動(dòng)端jQuery修正Web頁(yè)面滑動(dòng)時(shí)div問(wèn)題的兩則實(shí)例,分別針對(duì)頂部固定fixed不為0時(shí)滑動(dòng)出現(xiàn)的閃動(dòng)以及touchmove的受阻止的相關(guān)問(wèn)題,需要的朋友可以參考下2016-05-05