スタートページ> Javascript> jQueryの基礎
jQueryを用いています。head部に <script src="http://code.jquery.com/jquery-latest.js"></script< が必要です。
ここでは、このページを親HTMLといい、親HTMLから読み込まれて表示されるHTMLファイル(called/called1.html)を子HTMLといいます。
親HTMLの指定場所に子HTMLを埋め込む方法には、Ajaxによる外部ファイルの非同期読込.やjQueryを用いたjQueryによる外部ファイル読込・表示などがあります。
それらは、単にその場所に書き込まれただけなのに対して、iframe内の子HTMLは、本来別ページに表示される子HTMLが親HTML内に表示されたような状態になります。すなわち、子HTMLは親HTMLの影響を受けないのです。→参照:下の「JIH表示場所5」での説明通常iframeは、その部分に枠が設定されます。それが便利なこともありますが、場合によっては見ずらいことがあります。その枠を取り払い親HTMLと子htmlをシームレスに見せるには、jQueryの機能が必要になります。→参照:(後述)iframeサイズの自動調整
単に子HTML(called/called1.html)をiframeに表示するだけなら、
<iframe src="called/called1.html" width="50%" height="200"></iframe>
とすればよいので、jQueryを使う必要はありません。
しかし、次のような「細工」をするには、jQueryが便利です。
|
子HTMLの名称、width=、heightを変数とする関数にするには、jQueryを使うと簡潔になります。
<script>
function funcIframe(iframe名, 子HTML名, 幅, 高) {
$(iframe名).attr({
src: 子HTML名,
width: 幅,
height: 高
});
}
</script>
↓ <iframe id="JIH表示場所5"></iframe>:
|
↓ 子HTML(called/called1.html)の内容
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<style>.maroon {color:maroon}</style> <!-- ア -->
<script>
function funcHead() {
alert("called1.html head部script実行"); <!-- イ -->
}
</script>
</head>
<body>
<script>
function funcBody() {
alert("called1.html body部script実行"); <!-- ウ -->
}
</script>
<style>.teal{color:teal}</style> <!-- エ -->
<tagA> <!-- オ -->
<p id="idB">カ <p id="idB"><br>
<span class="maroon">キ class="maroon"</span>
<span class="teal">ク class="teal"</span>
<span class="red">ケ class="red"</span>
</p> <!-- コ -->
<h4 class="teal">サ class="teal"</h4>
シ<button onClick="funcHead()">funcHead実行</button><br>
ス<button onClick="funcBody()">funcBody実行</button><br>
</tagA> <!-- セ -->
<img src="120x80.jpg"><br> <!-- ソ -->
<img src="called/120x80.jpg"> <!-- タ -->
</body>
</html>
|
親ファイルのiframeに子ファイルを取り込むとき、子ファイルの大きさに合わせて高さ(height)を自動調整できれば、iframeの境界がなくなり、あたかも親ファイルのなかに子ファイルが記述されているかのように見せることができます。いくつかの部品(子ファイル)を組み合わせて、一つのページにしたいという場合に便利です。
<script>
$(document).ready(function(){ // A
$("#JIH表示場所6").attr( { // B
"width": "100%",
"scrolling": "no",
"frameborder": "0"
} );
$('#JIH表示場所6').load(function(){ // C
$(this).height(this.contentWindow.document.documentElement.offsetHeight);
}); // D↑
$('#JIH表示場所6').triggerHandler('load'); // E
});
</script>
<iframe id="JIH表示場所6" src="called/called1.html"></iframe>
▼▼▼▼▼▼▼▼▼▼ この直後に<iframe<があります ▼▼▼▼▼▼▼▼▼▼
▲▲▲▲▲▲▲▲▲▲ 以上が called/called1.html の全文 ▲▲▲▲▲▲▲▲▲▲
このように、inflameに読み込んだ子ファイルの文と親ファイルの地の文がシームレスになっています。