Language/Javascript, HTML

CrossDomain iframe resize

FreeEnd 2010. 1. 19. 08:04
반응형

""""""""""""""""""""""""""""

'" 동일 도메인의 경우 ( A_Site : naver.com / B_Site : naver.com )

'""""""""""""""""""""""""""""

function resizeFrame(iframeObj){
        var innerBody = iframeObj.contentWindow.document.body;
        oldEvent = innerBody.onclick;
        innerBody.onclick = function(){ resizeFrame(iframeObj, 1);oldEvent; };
        var innerHeight = innerBody.scrollHeight + (innerBody.offsetHeight - innerBody.clientHeight);
        iframeObj.style.height = innerHeight;
        var innerWidth = innerBody.scrollWidth + (innerBody.offsetWidth - innerBody.clientWidth);
        iframeObj.style.width = innerWidth;    
        if( !arguments[1] )       
                this.scrollTo(1,1);
}

 

 <iframe name="name" scrolling="no" frameborder="0" width="100%" marginheight="5" marginwidth="5" src="filepath" onload="resizeFrame(this)"></iframe>

 

 

'""""""""""""""""""""""""""""

'" 서브 도메인이 다른 경우 ( A_Site : site1.naver.com / B_Site : site2.naver.com )

'""""""""""""""""""""""""""""

# site1.naver.com  (아이프레임을 호출하는 페이지)

function resizeFrame(iframeObj){

        document.domain="naver.com";
        var innerBody = iframeObj.contentWindow.document.body;
        oldEvent = innerBody.onclick;
        innerBody.onclick = function(){ resizeFrame(iframeObj, 1);oldEvent; };
        var innerHeight = innerBody.scrollHeight + (innerBody.offsetHeight - innerBody.clientHeight);
        iframeObj.style.height = innerHeight;
        var innerWidth = innerBody.scrollWidth + (innerBody.offsetWidth - innerBody.clientWidth);
        iframeObj.style.width = innerWidth;    
        if( !arguments[1] )       
                this.scrollTo(1,1);
}

 

 <iframe name="name" scrolling="no" frameborder="0" width="100%" marginheight="5" marginwidth="5" src="filepath" onload="resizeFrame(this)"></iframe>

 

# site2.naver.com  (아이프레임의 호출받는 페이지)

<head>와 </head>사이에

document.domain="naver.com";

 

 


'""""""""""""""""""""""""""""

'" 크로스 도메인의 경우 ( A_Site : naver.com / B_Site : daum.com )

'""""""""""""""""""""""""""""

# naver.com (아이프레임을 호출 하는 페이지)

<iframe id="resize_iframe" border="0" frameborder="0" scrolling="no" src="파일경로" width="690" height="10">

 

# naver.com 에 파일을 하나 추가 한다. (/resize_js.html)

<script language=javascript>
    var arrtmp = location.href.split("?");  arrtmp = arrtmp[1].split("&");

    var arrtmp2 = arrtmp[0].split("=")
    var wid = arrtmp2[1];

    var arrtmp2 = arrtmp[1].split("=")
    var hei = arrtmp2[1];

    var win = parent.parent.document.getElementById("resize_iframe");
    win.width = wid;
    win.height = hei;
</script>

 

 

# daum.com (아이프레임의 호출 받는 페이지)

<script language="javascript">

function SelfResize() {
 var iwid=690; var ihei = document.body.scrollHeight+10;
 if(navigator.appVersion.indexOf("MSIE 7.")>=0 || navigator.appVersion.indexOf("MSIE 8.")>=0) {
  if(parent!=self && ihei>0) resize_iframe2.location.href = "http://naver.com/resize_js.html?width="+ iwid +"&height="+ ihei;
 } else {
  if(parent!=self) self.resizeTo(iwid, ihei);
 }
}

</script>

<body onload="SelfResize();">

<iframe id="resize_iframe2" border="0" frameborder="0" scrolling="no" src="_blank.html" width="1" height="1">

 

 

 

# 익스플로어의 버전이 6이하일 경우 세가지 경우 모두 1번의 소스만으로 가능합니다.

반응형