実装方法
下記.は、そのスクリプトを使用した場合のHTML例
<head>
<script type="text/javascript" src="jquery-1.4.3.min.js"></script>
<SCRIPT type="text/javascript" src="jquery.iframe-auto-height.js"></SCRIPT>
</head>
<body>
<p>
<IFRAME src="sample/iframetest.htm" class="sample" frameborder="0" scrolling="yes" height="100" width="500"></IFRAME>
<SCRIPT>jQuery('iframe.sample').iframeAutoHeight();</SCRIPT>
</p>
</body>
下記は、その例。
.
AutoHeight を使わない場合
<iframe src="sample/iframetest.html" frameborder="0"
scrolling="yes" height="100" width="500"></iframe>
AutoHeight を使って自動調整した場合 サンプルファイルのダウンロード(sample_auto-height.zip)
<iframe src="sample/iframetest.html" class="sample" frameborder="0" scrolling="yes" height="100"
width="500"></iframe>
<script>jQuery('iframe.sample').iframeAutoHeight({ heightOffset: 20 });</script>
高さが自動調整されて大きくなり、スクロールバーが消えた
上記のように、クラス属性で対象が絞られています。
クラスを指定せずに、下記のようにすると、すべての IFRAME が対象
<IFRAME src="sample/iframetest.htm" frameborder="0" scrolling="yes" height="100"width="500"></IFRAME>
<SCRIPT>jQuery('iframe').iframeAutoHeight();</SCRIPT></p>
ダウンロード
スクリプトのダウンロードは、下図を参照。
下図は上で記述したIFRAMEを使用しています。

解凍すると、下図のようなフォルダ構成でファイル一式が現れます。
ここでは、下図の2つのファイルを、スクリプトを置くフォルダにコピーします。
別のフォルダでも、同じフォルダでも、SRCで指定するパスと一致すれば構いません。

IFRAMEの高さ調整
- FRAME高さを意図的に大きくするここでは scrolling="no" としていますが、これを scrolling="auto"(または省略)とすると、垂直スクロールバーが現れます。
ブラウザによっては、微妙にフレーム内に納まらない場合があります。
そのような場合にも、微調整の手段が用意されています。
<SCRIPT>jQuery('iframe').iframeAutoHeight({ heightOffset: 50 });</SCRIPT>
上のピンク字のように記述を追加すると、フレームの高さを50ピクセルだけ伸ばします。
画面が切れる、または、不要なスクロールバーが表示される場合に指定してください。
複数のIFRAMEを個別調整
複数のIFRAMEがあり、それぞれを個別に調整したい場合は、下記のようにクラス属性を指定します。
<p><IFRAME src="download.htm" class="myclass" frameborder="0" scrolling="no" width="700"></IFRAME>
<SCRIPT>jQuery('iframe.myclass').iframeAutoHeight();</SCRIPT></p>
実装サンプル
+クラス指定+フレーム枠表示
<script>jQuery('iframe.myclassA').iframeAutoHeight();</script>
+スクロールバー表示 - スクロールバーが表示される
<script>jQuery('iframe.myclassB').iframeAutoHeight();</script>
+高さ20 - スクロールバーが消える
<script>jQuery('iframe.myclassC').iframeAutoHeight({ heightOffset: 20 });</script>
+高さ20+枠非表示
<script>jQuery('iframe.myclassD').iframeAutoHeight({ heightOffset: 20 });</script>
制限事項
クロスドメインには対応していないようです。
できないことはないようですが、面倒で、あまり実用的では無いようです。下記リンク
- window.postMessage() を使って、クロスドメインの iframe の高さを設定する検証
- クロスドメインでiframeの高さを調整する方法
- Setting the height of a cross-domain iframe using postMessage
あくまでも、相対パスで参照できる範囲内(同一ドメイン)のファイルを対象とするのが無難なようです。
補足
PCの計算能力が低い(または通信速度が遅い)場合、IFrameの展開に時間が掛かることがあります。この場合、伸長されていない状態がしばらく画面に表示されるので、少々、間の抜けた状態となってしまいます。
よって、IFrameの初期状態の高さ(height)は、ある程度の大きさの(実際に伸長した状態の高さに近い)値として置くことをお奨めします。
関連ページ