2009-04-05 15 views
0

콘텐츠에 따라 IFrame의 높이를 자동으로 조정하는 자바 스크립트를 작성했습니다. 이것은 프레임 된 페이지의 내용이 생성되자 마자 수행됩니다. Firefox에서는 아무런 문제가 없지만 IE에서는 스크립트가 제대로 실행되지만 아무런 효과가 나타나지 않습니다.이 메서드는 콜백 함수에서 호출됩니다. 어떤 설교? 버튼을 사용하여 메서드를 실행하면 완벽하게 작동하고 프레임의 크기가 조정됩니다.HTML 요소의 높이 속성이 Internet Explorer에서 설정되지 않았습니다.

나는 내 앞에서 코드를 찾지 못했다.

function resizeFrame(){ 
    var frame = parent.document.getElementsById(window.me); 
    frame.style.height = document.offsetHeight; 
} 

을 그리고 호출하는 함수는 다음과 같이이다 : 크기 조정 방법은 다음과 같다 내가 세일즈 포스 아약스 라이브러리를 사용하고

//init function 
bunding.doSomeWork(callbackFunction); 
... 

function callbackFunction() 
{ 
    //does some HTML output 
    resizeFrame(); 
} 

.

+0

일부 자바 스크립트가 있습니까? – hunter

답변

1

새로운 콘텐츠가 추가되었을 때 offsetHeight, clientHeight 및 scrollHeight와 같은 IE 속성이 올바르게 설정되지 않는 경우가 있습니다. 이러한 속성에서 정확한 값을 얻을 수 있기 전에 디스플레이를 다시 칠하기 위해 setTimeout을 사용해야했습니다.

+0

그것은 비협조적인 해결책입니다 ... 내일이 솔루션을 시도해 보겠습니다 ... 매우 성가신! tnx –

+0

완벽하게 작동합니다! 크기 조정 메서드를 호출하면 IE에서 프레임의 높이를 인식하게됩니다. 이상한 행동. txx –

1

실제로 코드를 보지 않고 디버깅하기는 어렵지만 다음 예제는 IE와 Firefox에서 잘 작동합니다.

<!DOCTYPE html> 
<html> 
<head> 
    <title>so-iframeResize</title> 
    <script type="text/javascript" > 

    onframeload=function(iframe) { 
     var doc = iframe.contentWindow.document; 
     iframe.style.height = Math.max(
     doc.getElementsByTagName("html")[0].offsetHeight, 
     doc.body.offsetHeight // IE prefers this value 
    ) + "px"; 
    }; 

    </script> 
</head> 
<body> 
    <div id="page"> 
    <iframe src="about:blank" onload="onframeload(this)"> 
    </iframe> 
    </div> 
</body> 
</html> 
+0

문제는 현재 iframe의 높이를 기준으로 크기가 조정됩니다 –

+0

onframeload 함수를 업데이트하여 콘텐츠의 offsetHeight에 따라 높이를 설정합니다. –