top.htmlからinc.htmlをiframeで呼び出し、iframe内の「下に移動」のリンクをクリックすると、top.html毎ページが移動してしまいます。iframe内だけの移動にする手段はないでしょうか?
WindowsXP IE6.0 SP1
<!-- top.html -->
<h2>ほげほげ</h2>
〜色々と文章〜
〜色々と文章〜
<iframe src=”inc.html” width=”450” height=”300”></iframe>
<!-- /top.html -->
<!-- inc.html -->
<a href=”#anc”>下に移動</a>
〜色々と文章〜
〜色々と文章〜
<a name=”anc”></a>
<!-- /inc.html -->
ブラウザがサポートしているならば、デフォルトの
動作で、ご期待の動作をするはずです。
が、強制指定するなら以下のようになります。
<A HREF=”#anc” TARGET=”_self”>下に移動</A>
他のブラウザでどうなるか試してみては如何でしょうか?
こんにちは。
iframeに名前をつけておいて、inc.html内のリンクで target指定してください。
サンプル:
<!-- top.html -->
<h2>ほげほげ</h2>
~色々と文章~
~色々と文章~
<iframe name=”frame_name” src=”inc.html” width=”450” height=”300”></iframe>
<!-- /top.html -->
<!-- inc.html -->
<a href=”#anc” target=”frame_name”>下に移動</a>
~色々と文章~
~色々と文章~
<a name=”anc”></a>
<!-- /inc.html -->
また、inc.html内の各リンクでtargetを指定するのが面倒な場合は、inc.htmlのhead部に
<base target=”frame_name”>
と、リンク先のターゲットのベースを指定してください。
ありがとうございます。これは思いつきませんでした!
先ほどtargetで自分自身を指す方法を試してみたのですが、状況は変わらず...。IE6.0, NN7.1, FireFox1.0も同様の動作でした。
IDリンクをすると状況に応じて結果が異なります。
もしもinc.htmlのみがスクロールバーを必要とする場合
top.htmlはスクロールされることはありません。
もしもtop.htmlのみまたは両方がスクロールバーを必要とする場合
状況に応じて以下の2つの結果のいずれかになります。
(1)iframeが完全に表示されるような位置にスクロールされている場合
inc.htmlのみがスクロールされる
→top.htmlがスクロールバーを必要としない場合の動作と同じ。
(2)iframeが完全に表示されないような位置にスクロールされている場合
iframe全体が表示されるようにスクロールされる
→明示的にどのiframeに対して操作を行ったかユーザーに知らせ混乱やフィッシング等の被害を防止する目的
の(2)の場合に該当しているのではないでしょうか。
(2)の場合に該当しているとすればMSIE,
Gecko系(Camino,Firefox,Mozilla,Netscape等),
Opera,KHTML系(Konqueror,Safari等)等の
0.01%以上のシェアを持つブラウザにおいて
この動作を阻止する手段はありません。
またこれを阻止することができるとすれば
それはある意味セキュリティー問題となり
ベンダーとすれば早期に修正しなければならない案件となります。
よっておそらくお望みの動きはさせることができません。
回答ありがとうございます。
こちらでも色々と試しておりましたが、両方においてスクロールバーが表示される際にこの現象が起こることがわかりました。
そうですか、できませんか。
JavaScriptを使って、アンカーの座標を取得し強制的にスクロールする方法を今、試していますので、これが実現できれば、この方法でいきたいと思います。
ありがとうございました。
ご回答ありがとうございます。
_selfを試してみましたが、やはり呼び出しもとのHTML(top.html)も引きづられてしまいます。
ご指摘のようにブラウザ固有の問題かと思い試してみたところFireFox1.0, NN7.1も同様の動作をします。
どうしたものでしょうか(^^;
まさか動かないとは思わなくて苦戦しております。