2009-09-29 7 views
2

Iframe을 통해 다른 페이지에 내 페이지를 표시하고 싶습니다.
문제는 iframe의 크기가 자동으로 조절되지 않는다는 것입니다 (높이).ASP에서 동적으로 iframe의 크기를 조정하십시오.

어떻게 자동으로 크기를 조정합니까? 아니면 한 페이지를 다른 페이지에 표시하는 더 좋은 방법이 있습니까? http://www.mattcutts.com/blog/iframe-height-scrollbar-example/

이 loded있어 후 프레임의 높이가 변경 될 경우에 당신이 정기적으로 크기가 변경 될 경우 프레임의 크기를 조정하는 폴링 메커니즘을 설정할 수 있습니다 (예를 들어/축소 영역을 확장) :

+0

dani, 내 개정 된 답변이 당신이하려는 것과 일치합니까? –

+0

글쎄, 나는 타이머를 사용하고 싶지 않다. 효율적이지 않다. – dani

답변

1

여기 하나의 방법입니다 .

<html> 
<head> <title>Parent frame</title> </head> 

<body onload="window.setTimeout(resizeFrame, 250)" bgcolor="#cccccc"> 

<script type="text/javascript"> 
// Firefox worked fine. Internet Explorer shows scrollbar because of frameborder 
function resizeFrame() { 
    var f = document.getElementById('childframe'); 
    if (f.style.height != f.contentWindow.document.body.scrollHeight + "px") 
    f.style.height = f.contentWindow.document.body.scrollHeight; 
    window.setTimeout(resizeFrame, 250) 
} 
</script> 

<p>Parent frame.</p> 
<p>Parent frame.</p> 
<p>Parent frame.</p> 
<p>Parent frame.</p> 

<p> 
    <iframe frameborder=0 src="./innerframe.htm" name="childframe" id="childframe"> 
    </iframe> 
</p> 

</body> 
</html> 

참고 :이처럼 당신이 다른 도메인의 내용을 당겨 있기 때문에 당신이 프레임을 사용하고 있으리라 믿고있어. 동일한 도메인에서 콘텐츠를 가져 오는 경우 XmlHttpRequest를 사용하여 콘텐츠를 가져온 다음 스크립트를 사용하여 상위 페이지의 DIV에 HTML을 삽입 할 수 있습니다. 브라우저의 사이트 간 스크립팅 제한으로 인해 콘텐츠가 다른 도메인에있는 경우에는이 작업을 수행 할 수 없습니다.

+0

iframe 콘텐츠 높이를 런타임에 조정하면 (링크를 클릭하면 숨겨진 div가 표시됨) 호스팅 된 페이지에 표시되지 않기 때문에이 솔루션으로는 충분하지 않습니다. – dani

+0

높이가 변경 될 수있는 경우 솔루션을 N 밀리 초마다 간단히 반복하여 확장 할 수 있습니다. N이 합리적이라면 (예 : 10이 아님) 클라이언트 CPU에 최소한의 드래그 속도를 유지하면서 크기를 빠르게 조정할 수 있습니다. –

1
 setInterval(function() { 
       var ifm = document.getElementById("ifrmeID"); 
       var h = ifm.contentWindow.document.body.scrollHeight; 
       ifm.height = h < 400 ? 400 : h; 
      }, 800); 

iframe을 너무 짧게 만들거나 800 (ms) 주파수를 원하지 않으면 400이 기본 높이입니다.이 두 값을 조정할 수 있습니다. iframe을 포함하는 페이지의 끝에 js를 넣으십시오. 그러면 괜찮을 것입니다.

관련 문제