ページに埋め込まれた iframe のスクロールを制御するにはどうすればよいですか?この方法は、iframe ウィンドウのスクロール メソッドを使用することです。
1. iframeのウィンドウオブジェクトを取得する
var iwin = document.getElementById('iframe1').contentWindow;
2. iframeのウィンドウドキュメントオブジェクトを取得します。
var doc = iwin.document;
3. iframeウィンドウオブジェクトのscrollメソッドを呼び出します。
iwin.scroll(0,doc.body.scrollHeight);
スクロールの 2 つのパラメータは、x 軸と y 軸のスクロール量です。
doc.body.scrollHeight は、iframe ページの高さ(非表示部分を含む)です。
包括的なアプリケーションの例は次のとおりです。
次のようにコードをコピーします。
<html>
<頭>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>ホバーテスト</title>
<style type="text/css">
ウル{
背景色:#ff00ff;
表示:ブロック;
}
.toc li{
位置:相対;幅:10em;
背景色:#00ff00;
表示:ブロック;
}
り、{
/*display:block;*/ /*ブロック モードで表示される場合、親要素のスペース全体を占有します*/
背景色:#0000ff;
} /*ブロックレベルの要素を作成する必要があります*/
リアイ{
ディスプレイ:なし;
}
リア:ホバー{
テキスト整列:左;
}/*ここで追加したコードはIE6で表示するためのもので、text-decoration、color、z-index以外は特別な機能は記述できません。
.toc li a:ホバー i{
表示:ブロック;
幅:6em;
位置:絶対;
トップ:0;
left:100%; /* ここで 100% は要素 li に対する相対的な幅を指します*/
マージン:-1em 0 0 0em;
パディング:1em;
背景:#cde;
ボーダー: 1 ピクセル赤一色;
テキスト整列:左;
z インデックス:10000;
}
</スタイル>
</head>
<本文>
<iframe id="iframe1" src=""></iframe>
htmlコード
<ul id="toc">
<li><a href="1.html">第 1 章<i>ドラゴンが登場する</i></a></li>
<li><a href="2.html">第 1 章<i>騎士が召喚される</i></a></li>
<li><a href="3.html">第 1 章<i>失敗するとがっかりする</i></a></li>
<li><a href="4.html">第 1 章<i>ドラゴンが登場する</i></a></li>
<li><a href="5.html">第 1 章<i>ドラゴンが登場する</i></a></li>
<li><a href="6.html">第 1 章<i>ドラゴンが登場する</i></a></li>
<li><a href="7.html">第 1 章<i>ドラゴンが登場する</i></a></li>
</ul>
<スクリプト言語="javascript">
関数 getElementAbsPos(e) {
var t = e.offsetTop;
var l = e.offsetLeft;
while(e = e.offsetParent) {
t += e.offsetTop;
l += e.offsetLeft;
}
{左:l,上:t} を返します。
}
関数 getPosition(obj){
var left = 0;
varトップ = 0;
while(obj != document.body){
left = obj.offsetLeft;
トップ = obj.offsetTop;
obj = obj.offsetParent;
}
左に戻ります。
}
var lis = document.getElementsByTagName('li');
var iwin = document.getElementById('iframe1').contentWindow;
var doc = iwin.document;
for(var i=0;i<lis.length;i++){
lis[i].onmouseover = function(){
var obji = this.childNodes[0].childNodes[1];
doc.writeln('<br>'+ obji.innerText + ',' + getElementAbsPos(document.getElementById('toc')).left);
doc.writeln('<br>'+ obji.offsetLeft + ',' + getElementAbsPos(obji).left + ',' + obji.offsetWidth+ ',' + obji.style.left);
doc.writeln('<br><b>'+ doc.body.scrollHeight + '</b>')
iwin.scroll(0,doc.body.scrollHeight);
//iwin.scrollTo(10000); //無効です
}
}
</script>
</body>
</html>