• ベストアンサー

フレームの読込み順

皆さん、こんにちは。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を読み込ませて下部に表示させる方法はないものでしょうか?

  • HTML
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
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

  • ブラウザによってフレームの表示が異なるのですが..

    はじめまして。 現在下記のような形のHPを制作しているのですが、フレームが難しくてなかなか進めません。 ブラウザやそれぞれの環境によって見え方が違ってしまいます。 私の環境では真ん中にぎゅっと詰まってスクロールが出てしまうような小さな見え方になってしまっています。 どの環境で見ても統一させるにはどのようにしたら良いのでしょうか。 ------------------------------ 上の固定バー ------------------------------ メニュー|内容     |     |     |     | ------------------------------ 下の固定バー ------------------------------ ソースは以下のように組みました。 <frameset rows="10%,*" cols="*" framespacing="0" frameborder="no" border="0"> <frame src="Margin/Index.html" scrolling="No" noresize title="topFrame"> <frameset rows="*,230" cols="*" framespacing="0" frameborder="no" border="0"> <frameset cols="215,*" frameborder="no" border="0" framespacing="0"> <frame src="Margin/Index.html" scrolling="No" noresize title="menuBarFrame"> <frameset cols="*,25%" frameborder="no" border="0" framespacing="0"> <frameset rows="64,*" frameborder="no" border="0" framespacing="0"> <frame src="topbar/topbar.html" scrolling="No" noresize title="topBarFrame"> <frameset rows="*,41" cols="*" framespacing="0" frameborder="no" border="0"> <frameset rows="*" cols="178,*" framespacing="0" frameborder="no" border="0"> <frame src="menu/menu.html" scrolling="No" noresize title="leftFrame1"> <frame src="top/top.html" name="main" title="topFrame"></frameset> <frame src="bottombar/bottomBar.html" scrolling="No" noresize title="bottomFrame1"> </frameset> </frameset> <frame src="Margin/Index.html" scrolling="No" noresize title="rightFrame"> </frameset> </frameset> <frame src="Margin/Index.html" scrolling="No" noresize title="MenuBarFrame"> </frameset> </frameset> <noframes> ------------- また、現在フレームは推奨されないのも知っているので、 オススメの組み方がありましたら教えていただけませんでしょうか。 HTML等に関してまったくの初心者ですので、判り易く教えていただけたら大変有り難く思います。どうぞよろしくお願いします。

    • ベストアンサー
    • HTML
  • frame をセンタリングしたい

    お世話になります。 Frameを2つ表示するhtmlを作成しているのですが、 2個目の「src="Window_2.HTM」をセンタリングして 表示したいのですが、どのように記述を変えれば よいでしょうか? お手数ですがなにとぞよろしくお願いいたします。 ///////////作成ソース/////////// <frameset rows="45,*" frameborder="NO" border="0" framespacing="0"> <frame src="Window_1.HTM" name="menuhead" frameborder="no" scrolling="NO" marginheight="0" > <frame name="menumain" src="Window_2.HTM"> </frameset> /////////////////

    • ベストアンサー
    • HTML
  • フレームと余白

    <html> <FRAMESET ROWS="100,*" FRAMESPACING="0"> <FRAME SRC="a.html" scrolling="no" frameborder="1" noresize> <FRAME SRC="b.html"> </FRAMESET> </html> a.htmlにscrolling="no"は必須です。 b.htmlにscrolling="no"は付けてはいけません。 a.htmlもb.htmlも内容は <html> <body style=margin:0> <table border=0 width=100%><tr><td>a</table> </body> </html> です。 b.htmlはwidth=100%になっていません。 見た目がwidth=100%になる方法を教えてください。

  • フレームで表示すると

    自分でフレームを組んだのですが、 IEだと大丈夫だったのですが、 NN4.7で崩れてしまいました。 フレームの間に白い線が入ってしまいます。 原因がわからず、ここに質問しております。 一つの画像を縦3つに分け、真ん中は横3つに分け、 合計5マド構成のフレームにしたいと思っています。 インラインフレームのような感じです。 インラインフレームだとNNでは表示されないので、 このような形にしようと思いました。 下記のようなソースでは何か問題があるのでしょうか。 教えてください、宜しくお願いします。 <frameset rows="*,*,*" frameborder="0" framespacing="0" border="0"> <frame src="top.htm" marginwidth="0" marginheight="0" scrolling="no" noresize> <frameset cols="*,*,*" frameborder="0" framespacing="0" border="0"> <frame src="midddle_left.htm" marginwidth="0" marginheight="0" scrolling="no" noresize> <frame src="midddle_midddle.htm" marginwidth="0" marginheight="0" scrolling="yes" noresize> <frame src="midddle_right.htm" marginwidth="0" marginheight="0" scrolling="no" noresize> </frameset> <frame src="bottom.htm" marginwidth="0" marginheight="0" scrolling="no" noresize> </frameset>

  • フレームすくローリング有り/無し

    こんにちわ だいぶ前に登録してから、久しぶりに 質問させて頂きます。  フレームページの作成をしております。  右がメインで、左がメニューの一般的なものですが、  左のメニューフレームについて、、、 縦幅はスクロール有り 横幅はスクロール無しにし、幅を固定したいのですが HTMLタグ辞典や調べて探しきれませんでした。 既に同じ質問が出ていたら申し訳ありません、 何卒宜しくお願い致します。  現在 indexのタグは以下のとおりです。 --------------- <frameset rows="*" cols="150,*" frameborder="NO" border="0" framespacing="0"> <frame src="left_frame.htm" name="leftFrame" scrolling="auto" noresize>  ↑↑↑↑↑↑↑↑ auto にすると、横も縦も  スクロール出てしまいます;_; <frameset rows="82,*" cols="*" framespacing="0" frameborder="NO" border="0" Marginwidth="5"> <frame src="frame_above.htm" name="topFrame" scrolling="NO" noresize> <frame src="main.htm" name="mainFrame"> </frameset> </frameset> <noframes><body> ---------------

  • フレームについて

    下記のようなフレームの設定をした場合、ウィンドウが全画面だった場合はちゃんと表示されるのですが、中間ぐらいだった場合は上記フレーム、下記フレームとも少し隠れた表示になってしまいます。 これをどうか解消できる方法はないのでしょうか?  推測ではパーセント指定的な物になっているからではと思っているのですが、どうでしょうか お願いします。 <FRAMESET rows="7,91,3" frameborder="0" border="0" framespacing="0"> <FRAME src="index01.html" name="1" scrolling="no"> <FRAME src="index02.html" name="2"> <FRAME src="index03.html" name="3" scrolling="no"> <NOFRAMES>

  • フレームなしPからフレームありP内へのアンカーへ

    フレームなしページからフレームありページ内の指定アンカー(ラベル)へ飛ばしたいと思い、過去ログq135419を参考に JavaScript を埋め込もうとしていますが、うまくいきません。 フレームありのページは3分割してあり、上をaaa.htm、左をbbb.htm、右をccc.htmと作ってあります。 -例- <html> <head><title></title> </head> <FRAMESET rows="82,*" cols="*" frameborder="NO" border="0" framespacing="0"> <FRAME src="framef/aaa.htm" name="ue" frameborder="no" scrolling="NO" noresize id="header"> <FRAMESET rows="*" cols="228,*" framespacing="0" frameborder="NO" border="0"> <FRAME src="framef/bbb.htm" name="hidari" frameborder="no" scrolling="auto" noresize id="navi"> <FRAME src="ccc.htm" name="main" frameborder="no" scrolling="auto" id="main"> </FRAMESET> <NOFRAMES> <P>このページを表示するには、フレームをサポートしているブラウザが必要です。</P></NOFRAMES> </FRAMESET> </html> この内、ccc.htmにアンカー(ラベル)を指定し、フレームなしページからフレーム内のそのアンカー(ラベル)まで飛ばしたいと思っていますが、過去ログで提示してあるJavaScriptを当方のページで作ってあるものに置き換えてもうまく表示されません。(何も表示されません。) そもそも提示のJavaScriptでは3分割に対応してないのでしょうか。 元のページは業者で作成してもらったもので、フレームのページはcssとか使用され凝ったものになっています。それも何か関係あるのでしょうか。 よろしくお願いいたします。

  • 改・キーボードナビゲーション

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=762151 にて質問し、解決したに見えたのですが、確認もせず閉じた為、再度投稿させて下さい。 ページトップにフレームファイルを置き、 <frameset cols="250,*" frameborder="0" framespacing="0"> <frameset rows="16,*" frameborder="0" framespacing="0"> <frame src="***.html" name="0" SCROLLING="NO" NORESIZE> <frameset rows="25,*" frameborder="0" framespacing="0"> <frame src="***.html" name="1" SCROLLING="NO" NORESIZE> <frameset rows="51,*" frameborder="0" framespacing="0"> <frame src="***.html" name="2" SCROLLING="NO" NORESIZE> <frame src="***.html" name="3" SCROLLING="NO" NORESIZE> </frameset> </frameset> </frameset> <frame src="***.html" name="4" SCROLLING="NO" NORESIZE> </frameset> とします。 NAME“0”のページがメニューで、ここをクリックするとNAME“1”に開かれる仕組みです。 NAME0に、 function checkNavigation() { if(event.keyCode==49)location.href="NAME1に開くページ"; } window.document.onkeydown = checkNavigation; と書きます。 前投稿では、「1.location.~」とすればOKだとなっていたのですが、確認した所何故か機能しませんでした。 NAME0をアクティブページにして“1”を押下してみたり、試して見たのですが駄目でした。 どうしたら良いのでしょうか。お願いします。

  • フレームがきれいになりません。

    下記のように上と、左右で3フレームを分けて表示していますが、 <frameset rows="60,*" border="0" frameborder="0" framespancing="0"> <frame src="title.html" name="head" scrolling="no"> <frameset cols="130,*" border="0" frameborder="0" framespancing="0"> <frame src="menu.html" name="menu" scrolling="auto"> <frame src="cont.html" name="main" scrolling="auto"> </frameset> </frameset> *で表示しても、左のフレームの下にスクロールバーが出てしまいます。どのようにすれば直るのか初心者のため分からなくて困っています。もし分かる方是非教えてください。 現状はこんな感じになってしまっています↓ http://www.twinklecloset.com/index.html

  • 画面の四分割の方法について

    教えていただきたいのですが、↓で作成した画面の最下部にbottom(titleと同じ幅で画面の下部)を作りたい場合は、どのように追加記述すべきなのでしょうか? いろいろ試しているのですが上手くいかないのです(汗 <frameset rows="90,*" border="0" frameborder="0" framespacing="0"> <frame name="title" src="title.html" scrolling="NO" noresize> <frameset cols="180,*" border="0" frameborder="0" framespacing="0"> <frame name="menu" src="menu.html" noresize> <frame name="body" src="body.html"> </frameset> </frameset> 宜しくお願いいたします。。。

    • ベストアンサー
    • CSS