Web Source2014. 9. 4. 13:37

네이버에서는 검색이 어려운 블로그입니다. 구글검색을 이용해 주세요.




프레임이 바뀔 때마다 자동으로 프레임의 사이즈에 맞게 크기를 조정한다.

위의 소스는 모든 플랫폼에서 잘 작동할것 같은 예감이 든다.


http://stackoverflow.com/questions/14713339/why-is-postmessage-script-not-working-in-ie8


아래 소스는 프레임을 불러왔을 때 자동으로 높이를 조정한다.

iframe cross domain 도 가능하다. 결론은 상호조약이 있어야 한다.


부모페이지에는 자식페이지 주소가 있어야 하고 자식페이지에는 부모페이지 주소가 있어야 한다.

여기 CCM음반 카테고리는 다 아래의 소스로 되어 있으며 IE8, Chrome 에서 잘 작동한다. (iframe cross domain)

IE7 이하는 postMessage 이벤트를 지원하지 않아서 안된다.

======================================================================

부모 페이지 내용

<script type="text/javascript">

    if (window.addEventListener) {

        window.addEventListener('message', letsgo, false);

    } else if (window.attachEvent) {

        window.attachEvent('onmessage', letsgo);

    }

    function letsgo(event) {

        var iframe = document.getElementById('ifr');

        if (event.origin !== 'http://exm.com') return; // iframe src 도메인. 없어도 가능

        if (isNaN(event.data)) return; // only accept something which can be parsed as a number. 없어도 가능

        var height = parseInt(event.data) + 32; // add some extra height to avoid scrollbar

        iframe.height = height + "px";

    }

</script>


<iframe src="http://exm.com/1.html" frameborder="0" scrolling="no" style="width: 100%;" id="ifr"></iframe>


====================================================================
자식페이지 내용 (http://exm.com/1.html)

<!--부모페이지의 도메인 주소는 필수.. '*' 도 가능 ... IE8 ? 에서는 빨간색 부분을 반드시 해줘야 한다-->
<body onload="setTimeout(function(){parent.postMessage(document.body.scrollHeight, 'http://domain.com')},50)">

=========================================================================


같은 도메인이면 postMessage 없이 아래로 가능하지만 다른 도메인이면 안된다.

<script language="javascript">

function ResizeHeight(FrameID)

{

    var this_height= document.getElementById(FrameID).contentWindow.document.body.scrollHeight;

    document.getElementById(FrameID).height=this_height;

}

</script>


<iframe id="iFrame" src="1.html" width="100%" onLoad="ResizeHeight('iFrame')"></iframe>


==================

JQuery  ( IE8 에서는 안된다 ㅠ )

$(function() {

    $('#iFrame').load(function() {

        $(this).css('height', $(this).contents().find('body').height()+'px');

    });

});


'Web Source' 카테고리의 다른 글

Get Cross Domain iFrame Content  (0) 2014.09.25
PHP - Browser detection - IE, Firefox, Safari, Chrome  (0) 2014.09.22
Div Zoom iFrame  (0) 2014.09.03
javascript yesterday  (0) 2014.09.03
javascript exist document.getElementById  (0) 2014.09.03
Posted by 영육치료