實現跨域iframe介面方法呼叫 簡單介紹
頁面a.html域名為www.a.com,嵌入頁面http://www.b.com/b.html.
b.html要呼叫a.html中的js函式,由於兩個頁面不在一個域中,會提示沒許可權。
下面就介紹一下如何如何解決此問題,需要的朋友可以做一下參考。
一.cross.js程式碼如下:
[JavaScript] 純文字檢視 複製程式碼(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程式碼如下:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script src="jquery-1.8.3.min.js"></script> <script src="cross.js"></script> <script> function call_b(){ var ifw = $("#ifr")[0].contentWindow; //呼叫iframe子頁面的公開的test介面, 子頁面域名為http://localhost:8088 Cross.call(ifw,"http://localhost:8088","test",{t: $("#txt").val()}); } </script> </head> <body> <input id="txt" type="text"/> <button>call</button> <iframe id="ifr" src="http://localhost:8088/b.html"></iframe> </body> </html>
三.b.html程式碼如下:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script src="jquery-1.8.3.min.js"></script> <script src="cross.js"></script> <script> //對外公開一個介面命名為test Cross.on("test", function(data){ alert(data.t); }); </script> </head> <body> </body> </html>
相關文章
- 使用CORS實現ajax跨域簡單介紹CORS跨域
- ajax跨域請求簡單介紹跨域
- ajax實現跨域請求程式碼例項簡單介紹跨域
- javascript實現鏈式呼叫簡單介紹JavaScript
- AngularJs解決跨域簡單介紹AngularJS跨域
- javascript如何操作iframe簡單介紹JavaScript
- Vue嵌入iframe,iframe如何跨域呼叫vue內路由Vue跨域路由
- 簡單介紹NMS的實現方法
- 最簡單實現跨域的方法:用 Nginx 反向代理跨域Nginx
- 最簡單實現跨域的方法:使用nginx反向代理跨域Nginx
- iframe跨域的幾種常用方法跨域
- javascript判斷iframe頁面載入完畢方法簡單介紹JavaScript
- javascript作用域簡單介紹JavaScript
- 實現瀏覽器跨域解決方案介紹瀏覽器跨域
- javascript鏈式呼叫簡單介紹JavaScript
- 簡單介紹numpy實現RNN原理實現RNN
- 前端跨域有哪些種方法及介紹?前端跨域
- 簡單的實現jsonp跨域請求JSON跨域
- 簡單介紹C#呼叫USB攝像頭的方法C#
- javascript函式呼叫方式簡單介紹JavaScript函式
- javascript作用域和作用域鏈簡單介紹JavaScript
- iframe 元素跨域訪問跨域
- javascript實現繼承方式簡單介紹JavaScript繼承
- javascript實現二維陣列實現簡單介紹JavaScript陣列
- javascript呼叫函式的方式簡單介紹JavaScript函式
- Iframe嵌入跨域頁面高度自適應實現詳解跨域
- asp.net WebService實現跨域js呼叫功能實現ASP.NETWeb跨域JS
- 利用JQuery實現更簡單的Ajax跨域請求jQuery跨域
- js 函式作用域鏈簡單介紹JS函式
- javascript方法過載簡單介紹JavaScript
- js 特權方法簡單介紹JS
- bbossmvc結合jsonp實現跨站跨域應用間通訊功能介紹SSMMVCJSON跨域
- 實現微信搖一搖功能簡單介紹
- iframe 跨域高度自適應跨域
- 如何獲取跨域iframe高度跨域
- IFrame跨域問題筆記跨域筆記
- IE中iframe跨域訪問跨域
- js實現的跨域呼叫flash解決方案JS跨域