OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

フレームの読込み順

  • すぐに回答を!
  • 質問No.106964
  • 閲覧数782
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 50% (19/38)

皆さん、こんにちは。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を読み込ませて下部に表示させる方法はないものでしょうか?
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2

フレームの読み込み順は、決まっていません。
だから、a.htmlが先に読み込まれることもあれば、b.htmlが先に読み込まれることもあります。
どういう時にどちらが先に読み込まれるかという条件もありません。
(たぶん、どちらが先にhttpをつかんだかという問題でしかないと思います)

ただ、JavaScriptである程度制御することは可能です。
例えば、
1.指定のフレームが読み込み完了するまで、setTimeoutで待つ。
2.指定のフレームが存在する、という判定が返るまで待つ。
3.指定のフレームを参照するフレームを、数秒遅らせて読み込ませる。
等です。

ただ、基本的にフレーム割りのサイトを作成する場合、「片方のhtmlが読み込まれていること」を前提に作るのは、HTMLの仕様上無理があると思います。
JavaScriptは全部の人が使用できる物ではないですので・・・。

ひとつ使えそうなサンプルの載っているサイトがありましたので、載せておきますね。
ご参考までに。
お礼コメント
Blackwingls

お礼率 50% (19/38)

アドバイスありがとうございます。
参考URLは非常に為になりました。
昔、closed関係で悩んだ時、似たような手法を使ったことがあったのですが、今回この参考URLを見るまで、きれいに忘れ去っていました(^^;)
本当に助かりました。

> 、「片方のhtmlが読み込まれていること」を前提に作るのは、HTMLの仕様上無理があると思います。

本来はhtmlファイルはcgiで書き出す予定になっているそうですので問題はないと思うのですが、動作イメージを見てもらう為、今回このような形でやるハメになってしまいました(^^;)

ありがとうございましたm(__)m
投稿日時 - 2001-07-21 00:54:31
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル10

ベストアンサー率 36% (60/164)

はじめまして。novaakiraです。 質問にかかれているような条件で動作させたいのであれば.... たとえば、 <frameset rows="20%,80%" frameborder="0" border="0" framespacing="0"> <frame src="xx ...続きを読む
はじめまして。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

お礼率 50% (19/38)

回答、ありがとうございます。

これは・・・・、ちょっと思い付かなかったです(^^;)
基本といえば基本ですよねぇ。
灯台もと暗し、というか・・・・(笑)
そうか~、ワンクッション入れれば問題は解決だったのかぁ~。
俺ってかなりトンマでしたねぇ。

今回はJavaScriptを使用する方法で解決しましたが、次回に試してみたいと思います。

ありがとうございましたm(__)m
投稿日時 - 2001-07-21 01:02:07


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ