IFrame内部で名前付きリンク(アンカー)を使用すると勝手にスクロールする
口で説明するのは面倒くさいので以下に例を作りました。
-t1.html-
<html>
<a href="t2.html#b" target="ifmain">t2-b</a><br>
<a href="t2.html#c" target="ifmain">t2-c</a><br>
<a href="t3.html#b" target="ifmain">t3-b</a><br>
<a href="t3.html#c" target="ifmain">t3-c</a><br>
<iframe name="ifmain" src="t2.html" height="400" width="300"></iframe>
1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>
1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>
1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>
1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>
1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>
1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>
</html>
-t2.html、t3.html-
<html>
<table>
<tr><td height="300"><a name="a">a</a></td></tr>
<tr><td height="300"><a name="b">b</a></td></tr>
<tr><td height="300"><a name="c">c</a></td></tr>
</table>
</html>
t1.htmlを実行して頂ければわかるのですが、
t1からIFrame内部にアンカーで移動させる場合、
IFrame内部のスクロールが、なぜか呼び出し元
(windowオブジェクトで言えば、topとかparentの方)が
なぜか移動してしまいます。
呼び出し元のリンクに
onclick="ifmain.location.href=this.href;top.scrollTo(0,0);return false;"
というようなものを組み込んでもうまく動作しません。
(IE、FireFox両方共に)
なんとか回避する術はないでしょうか?
IFrame内部だけ移動すれば十分ですので。
お礼
早速ありがとうございます。 ご指導の通りonClick時に変更したら上手くいきました!!