フレームのロード順を固定する方法

[上に] [前に] [次に]
水原 麗名 1999/12/24(金) 02:33:50
フレームをまたいでJavascriptを使っている時に、
(上のフレームのスクリプトから、下のフレームのフォームに文字を書きこむ)
下のフレームを先に読み込むと正常に動作しますが、
上のフレームが先に読まれると、
「オブジェクトではありません」といわれてエラーになってしまいます。
フレームを読み込む順番を指定する方法はないでしょうか。

MORO 1999/12/24(金) 03:05:37
完全に熟知しているわけではないですが、たぶん、ないと思います。
私もおなじようなモノを作った経験ありますから。(^^;

私がとった解決策は、メインのフレーム(真っ先に読みこませる部分)を決めて、
それ以外はダミーのページを設定しておきました。<HTMLの記述
そして、メインのフレームが読みこまれた後に、JavaScriptでほかのフレームを
1つずつ読みこませていくという、一見面倒に思える方法をとりました。

でも、工夫すれば、けっこう利点もあるんですよ。
例えば、そのダミーのページに「しばらくお待ちください」とか出せるし。
JavaScriptの本体は1ヶ所に置いておき、他から「parent.フレーム名.関数名()」で
呼び出すようにすれば、プログラムを1ヶ所にまとめることができるし。
          。。。。。。。。。。。。

質問のページの場合、親フレームに管理用のプログラムを配置するという方法で
対処することもできますね。
上のフレームと下のフレームのそれぞれのBODYタグのonLoadイベントから、例えば
<body onLoad="parent.fncLoadOk();">
のようにして、親フレームにあるfncLoadOk()を呼び出す。
親フレームのfncLoadOk()は、例えば
  function fncLoadOk() {
    if (cnt ++ > 1) parent.上のフレーム.fncStart();    //変数 cnt はグローバルで初期値 0
  }
両方のページが読みこまれたら、上のフレーム内のfncStart()が実行されます。

ほら、なんとなく簡単に対処できそうな気がしません?

MORO 1999/12/24(金) 03:08:13
すみません。上の書きこみの
>    if (cnt ++ > 1) parent.上のフレーム.fncStart();    //変数 cnt はグローバルで初期値 0

>    if (++ cnt > 1) parent.上のフレーム.fncStart();    //変数 cnt はグローバルで初期値 0
として読んでください。(^^;;

水原 麗名 1999/12/24(金) 06:24:18
[[解決]]
やっぱりダミーページを読ませるしかないですか。
ありがとうございました。

MORO 1999/12/24(金) 06:42:44
2つめのカキコの後半の方法なら、ダミーページはいらないですよ。(^^;;

[上に] [前に] [次に]