• ベストアンサー

フレームの読込み順

皆さん、こんにちは。Blackwinglsです。 フレームの読込み順で困っています。 index.htmを以下のようにし、 <frameset rows="20%,80%" frameborder="0" border="0" framespacing="0"> <frame src="a.htm" name="up" scrolling="no"> <frame src="b.htm" name="down" scrolling="no"> </frameset> a.htm、b.htmを読んでいますが、a.htm内に <script language="JavaScript"> <!-- document.write(parent.down.myForm.word.value) //--> </script> のscriptを記述すると、当然まだb.htmは読み込まれていないのでエラーが最初の一回だけ出てしまいます。 a.htmはフレームの上部に表示したいので、 <frameset rows="20%,80%" frameborder="0" border="0" framespacing="0"> <frame src="a.htm" name="up" scrolling="no"> <frame src="b.htm" name="down" scrolling="no"> </frameset> の順は変更したくありません。 なんとか、先にb.htmを読み込ませて下部に表示させる方法はないものでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#1785
noname#1785
回答No.2

フレームの読み込み順は、決まっていません。 だから、a.htmlが先に読み込まれることもあれば、b.htmlが先に読み込まれることもあります。 どういう時にどちらが先に読み込まれるかという条件もありません。 (たぶん、どちらが先にhttpをつかんだかという問題でしかないと思います) ただ、JavaScriptである程度制御することは可能です。 例えば、 1.指定のフレームが読み込み完了するまで、setTimeoutで待つ。 2.指定のフレームが存在する、という判定が返るまで待つ。 3.指定のフレームを参照するフレームを、数秒遅らせて読み込ませる。 等です。 ただ、基本的にフレーム割りのサイトを作成する場合、「片方のhtmlが読み込まれていること」を前提に作るのは、HTMLの仕様上無理があると思います。 JavaScriptは全部の人が使用できる物ではないですので・・・。 ひとつ使えそうなサンプルの載っているサイトがありましたので、載せておきますね。 ご参考までに。

参考URL:
http://www06.u-page.so-net.ne.jp/wa2/mugi/js/
Blackwingls
質問者

お礼

アドバイスありがとうございます。 参考URLは非常に為になりました。 昔、closed関係で悩んだ時、似たような手法を使ったことがあったのですが、今回この参考URLを見るまで、きれいに忘れ去っていました(^^;) 本当に助かりました。 > 、「片方のhtmlが読み込まれていること」を前提に作るのは、HTMLの仕様上無理があると思います。 本来はhtmlファイルはcgiで書き出す予定になっているそうですので問題はないと思うのですが、動作イメージを見てもらう為、今回このような形でやるハメになってしまいました(^^;) ありがとうございましたm(__)m

その他の回答 (1)

  • novaakira
  • ベストアンサー率36% (60/164)
回答No.1

はじめまして。novaakiraです。 質問にかかれているような条件で動作させたいのであれば.... たとえば、 <frameset rows="20%,80%" frameborder="0" border="0" framespacing="0"> <frame src="xxx.htm" name="up" scrolling="no"> <frame src="b.htm" name="down" scrolling="no"> </frameset> として、xxx.htmの内容を、 <html> <meta http-equiv="refresh" content="5;url=a.htm"> </html> (動かない場合は<meta>タグを<head>タグ内に入れてください。) とすれば、index.htm自体はxxx.htmとb.htmを呼び込み、 xxx.htmは5秒後にa.htmに転送されるのでご希望のとおりになる はず........です。

Blackwingls
質問者

お礼

回答、ありがとうございます。 これは・・・・、ちょっと思い付かなかったです(^^;) 基本といえば基本ですよねぇ。 灯台もと暗し、というか・・・・(笑) そうか~、ワンクッション入れれば問題は解決だったのかぁ~。 俺ってかなりトンマでしたねぇ。 今回はJavaScriptを使用する方法で解決しましたが、次回に試してみたいと思います。 ありがとうございましたm(__)m

関連するQ&A