javascriptとiframeの質問です。


iframeで、外部サーバのページを表示します。
その際、任意の場所にまでスクロールを下げて表示させたいです。

表示するページは修正できません。
どうすれば宜しいでしょうか?サンプルをご提示いただけるとうれしいです。

回答の条件
  • 1人1回まで
  • 登録:2008/09/29 04:42:34
  • 終了:2008/10/06 04:45:03

回答(2件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332008/09/29 10:53:37

ポイント35pt

iframeのリンク先のコンテンツにはページ内ジャンプタグ(a name)は埋め込まれていないということですよね。

となると、JavaScriptのscrollToで強制的にスクロールさせる方法が考えられますが、ブラウザ環境によってスクロール量がまちまちという欠点があります。

サンプルは下記をご覧ください。

id:freewriter

ありがとうございます。

でもこの例は、ページ内(リンク先コンテンツ)から操作する話ですよね?

2008/09/29 12:12:40
id:m_nagase No.2

nagase回答回数58ベストアンサー獲得回数82008/09/29 16:25:36

ポイント35pt

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のアドレスにフラメントを指定して目的の部分を表示させることができますが、修正できないとなればお望みの動作は不可能であると思います。

id:freewriter

そういうことだったんですね。失礼致しました。

また、ご丁寧にありがとうございました!

2008/09/29 17:05:29
  • id:pahoo
    m_nagase さん、フォローをありがとうございます。
  • id:m_nagase
    以前に書いたサンプルがあっただけのことです。
    なぜかはてな記法がそのまま表示されてしまってます。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません