2008-08-29 17 views
8

iframeには、コンテンツを表示し、スクロールバーを表示するのに必要なだけの垂直方向のスペースが必要です。それはすべて可能ですか?iframeに垂直方向のスペースを取る

回避策はありますか?それが必要として、それは同じくらい垂直方向のスペースを取ることについてはまだ

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

私はわからないんだけど、私は理解できない場合、私はわかります

答えて

10

これは、その内容の高さにIFRAME高さを設定する必要があります。

編集:おっと、忘れてthe_heightを宣言してください。

+4

非常に便利な、歓声。 iframeが同じ原産地規則のために別のドメインにある場合、これがうまく動作しないことに言及する価値があるかもしれません。 – ConroyP

0

このCSSスニペットは、垂直スクロールバーを削除する必要がありますそれを出す。

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

あなたはスクロールバーをオフにするには、あなたのIFRAMEscrolling="no"を追加することもできます。

0

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

私はIEとFFの両方に問題を抱えていたW3C DOCTYPE for examples

参照ラインから正しい値を計算するのに役立ちますIFRAMEソース文書にDOCTYPE宣言を追加することは、レンダリングされたようDOCTYPEを追加するまで、 'quirks'モードのドキュメントをiframeに追加してください。

FF/IE/Chromeのサポート:.scrollHeightはChromeで動作しないので、jQueryを使用してiframeコンテンツに基づいてすべてのIFRAMEの高さを設定するjavascriptの例を考え出しました。注:これは現在のドメイン内の参照ページ用です。

<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

関連する問題