2008-08-29 55 views
8

我想要一個iframe需要儘可能多的垂直空間,因爲它需要顯示其內容並且不顯示滾動條。這是否可能?製作iframe需要垂直空間

是否有任何解決方法?

回答

10

這應該在IFRAME高度設爲其內容的高度:

<script type="text/javascript"> 
the_height = document.getElementById('the_iframe').contentWindow.document.body.scrollHeight; 
document.getElementById('the_iframe').height = the_height; 
</script> 

您可能需要添加scrolling="no"IFRAME關閉滾動條。

編輯:哎呀,忘了宣佈the_height

+4

非常方便,歡呼聲。值得一提的是,如果iframe由於相同的原始策略而位於不同的域上,這將無法很好地工作 – ConroyP 2008-10-16 09:32:44

0

這個CSS代碼段應該刪除垂直滾動條:

body { 
    overflow-x: hidden; 
    overflow-y: hidden; 
} 

我還沒有確定聯繫有關佔用儘可能多的垂直空間,因爲它需要的,但如果我不明白,我會看到出來。

0

添加DOCTYPE聲明的IFRAME源文件將有助於從線

document.getElementById('the_iframe').contentWindow.document.body.scrollHeight 

看到W3C DOCTYPE for examples

我與IE和FF問題計算正確的值,因爲它是渲染iframe文檔處於'怪癖'模式,直到我添加了DOCTYPE

FF/IE/Chrome支持:.scrollHeight不適用於Chrome,因此我提出了一個使用jQuery的javascript示例,基於iframes內容在頁面上設置所有IFRAME高度。注意:這是用於當前域中的參考頁面。

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $('iframe').each(function(){ 
      var context = $(this); 
      context.load(function(event){ // attach the onload event to the iframe 
       var body = $(this.contentWindow.document).find('body'); 
       if (body.length > 0 && $(body).find('*').length > 0) { // check if iframe has contents 
        context.height($(body.get(0)).height() + 20); 
       } else { 
        context.hide(); // hide iframes with no contents 
       } 
      }); 
     }); 
    }); 
</script> 
0

解決方法是不要在服務器端使用和預處理代碼。

+2

這並非總是可行,除非您要構建自定義代理服務器,以重寫HTML身體...這是一個笑話。 – ErikE 2010-11-16 17:37:32