>웹 프론트엔드 >JS 튜토리얼 >jQuery는 도메인 간 iframe 인터페이스 메소드 call_jquery를 구현합니다.

jQuery는 도메인 간 iframe 인터페이스 메소드 call_jquery를 구현합니다.

WBOY
WBOY원래의
2016-05-16 16:09:321177검색

cross.js

复主代码 代码如下:

(함수(전역){
  global.Cross = {
    신호 처리기: {},
    on: 기능(신호, 기능){
      this.signalHandler[신호] = func;
    },
    호출: 함수(win, 도메인, 신호, 데이터, callbackfunc){
      var 공지 = {"signal": 신호, "data": 데이터};
      if(!!callbackfunc){
          통지["callback"] = "callback_" new Date().getTime();
          Cross.on(notice["callback"], callbackfunc);
      }
      var 통지Str = JSON.stringify(알림);
      win.postMessage(noticeStr, domain);
    }
  };
  $(window).on("메시지", function(e) {
    var realEvent = e.originalEvent,
        데이터 = realEvent.data,
        swin = realEvent.source,
        오리진 = realEvent.origin,
        프로토콜;
    시도해보세요 {
        프로토콜 = JSON.parse(데이터);
        var 결과 = global.Cross.signalHandler[protocol.signal].call(null, 프로토콜.데이터);
        if(!!프로토콜["콜백"]){
          Cross.call(swin, Origin, 프로토콜["콜백"], {결과: 결과});
        }
        if(/^callback_/.test(protocol.signal)){
          Cross.signalHandler[protocol.signal];
삭제         }
    } 잡기 (e) {
      console.log(e);
      throw new Error("cross error.");
    }
  });
})(창);

a.html

复主代码 代码如下:



 
   
   
   
      함수 call_b(){
        var ifw = $("#ifr")[0].contentWindow;
        //iframe용 iframe용 공용 테스트接口, 子页face域name为http://localhost:8088
        Cross.call(ifw,"http://localhost:8088","test",{t: $("#txt").val()});
      }