iframeで、外部サーバのページを表示します。
その際、任意の場所にまでスクロールを下げて表示させたいです。
表示するページは修正できません。
どうすれば宜しいでしょうか?サンプルをご提示いただけるとうれしいです。
iframeのリンク先のコンテンツにはページ内ジャンプタグ(a name)は埋め込まれていないということですよね。
となると、JavaScriptのscrollToで強制的にスクロールさせる方法が考えられますが、ブラウザ環境によってスクロール量がまちまちという欠点があります。
サンプルは下記をご覧ください。
javascriptのscrollToでiframeの中身をピクセル単位でスクロールさせることができますが、ソースが外部サーバー(ドメイン)であるiframeは、クロスサイトの制限によってdomのアクセスが拒否されます。
例えば、以下のように同一サーバーと外部サーバーのiframeを設置して
>|html|
<iframe name="indomain" src="同一サーバーのコンテンツ"></iframe>
<iframe name="exdomain" src="外部サーバーのコンテンツ"></iframe>
||<
ページ内のフレーム一覧を保持する window.frames[] プロパティーでiframeにアクセスしてみると、
>|javascript|
for(var i=0;i<frames.length;i++){</p>
alert(frames[i].name);
frames[i].scrollTo(0,100);
}
||<
外部サーバーのiframeで、アクセス拒否のエラーとなるはずです。
上の回答でも触れられていますが、外部サーバーのコンテンツにフラグメント用アンカーが埋め込まれていれば、iframeのアドレスにフラメントを指定して目的の部分を表示させることができますが、修正できないとなればお望みの動作は不可能であると思います。
そういうことだったんですね。失礼致しました。
また、ご丁寧にありがとうございました!
ありがとうございます。
でもこの例は、ページ内(リンク先コンテンツ)から操作する話ですよね?