1. 2013. 10. 30. 09:54 개발자료/W3C
간단한 메세지 핸들러를 자바스크립트로 작성 한것 입니다
서로 다른 도메인에서 postMessage 를 통한 POST,GET 메세지를 전달한뒤 소스를 가져오는 내용 입니다
ajax : http://xtales.tistory.com/entry/%EC%9B%B9%ED%91%9C%EC%A4%80-XMLHttpRequest-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%ED%95%A8%EC%88%98

e.g) xrq( 쿼리, 대상주소, 콜백함수 )
쿼리 :
  u:요청주소
  p:postData
  a:콜백시 사용할 데이터
대상주소 : 크로스도메인
콜백함수 :
  arg1 : 요청소스
  arg2 : [쿼리 a] 콜백데이터

xrq({u:"http://B 사이트.com/ajax/call",p:"postdata=abcde&test=value",a:{argument:"any data"}},"http://B사이트.com/",function(response,argument){
});

A 사이트 [ 메세지 핸들러, 콜백 등록 스크립트 ] - 파란부분을 수정
[ 메세지를 받는 주요 부분 입니다 <script> 태그에 첨가 ]

window.addEventListener("message",function(e){
if(/http:\/\/.*?\.your\.(com|net)/.test(e.origin))xrs.c(e.data);
},false);


A 사이트 [ 크로스도메인 IO핸들러 설치 ] - 파란부분을 수정
[ IO핸들링을 하게되는 주요 부분 입니다 <script> 태그에 첨가 ]

var xrs={c:function(p){this[p.c](p.r,p.a);delete this[p.c]}},xrq=function(p,h,f){
    p.c=p.c+(new Date()).getTime();
    xrs[p.c]=f;
    $(".x-root .call")[0].contentWindow.postMessage(p,h);
}

B 사이트 [ 메세지 핸들러, 피드백 함수 등록 ] - 핸들러 내용을 수정
[ 메세지를 받는 주요 부분 입니다 <script> 태그에 첨가 ]

window.addEventListener("message",function(e){var p=e.data;
    ajax(p.u,{method:"POST",data:p.p,
        onload:function(){
            if(this.readyState==4){
                e.source.postMessage({a:p.a,c:p.c,r:this.responseText},e.origin);
            }
        }
    });
},false);
Posted by Nightly Luna
,
® © Tanny Tales
/ rss