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

WBOY
풀어 주다: 2016-05-16 16:09:32
원래의
1095명이 탐색했습니다.

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

复制代码 代码如下:



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

b.html

复制代码 代码如下:



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

以上就是本文所述的iframe跨域的解决方案了,希望大家能够喜欢。

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!