• 締切済み

子フレームの自動リロードは可能でしょうか?

フレームで2つに分割されたページ(frameset.htm)があるとします。 そのうち、一つのフレーム(menu.htm,name=MENU)はメニューとして常に表示されています。 もう一つのフレーム(name=MAIN)にはその時々でいろんなページが表示されます。 仮に、例えば60秒おきとかで、MAINにその瞬間に表示されているページを、 frameset.htmもmenu.htmもリロードせずに、 自動的にリロードさせることは出来ますか? MAINに表示させるページは閲覧者により手動でも変えられるようになっているため、リロードの瞬間にどのページが表示されているかは不定です。 なお、MAINに表示させるページ内に、Java ScriptやMETAタグは追加できない条件です。

みんなの回答

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.4

すみません、前回BODYのonLoadで、とか書いてしまいましたが、フレームの方に全て書かなければならないので、FRAMESETのonLoadでした。 自分のところで動作確認済みのソースを下記に挙げますので、参考にしてみて下さい。 <HTML> <HEAD> <SCRIPT language="JavaScript"><!-- function reload_frame() {   frames["MAIN"].location.reload();   setTimeout("reload_frame()", 500); } //--></SCRIPT> </HEAD> <FRAMESET ROWS="64,*" onLoad="reload_frame()">  <FRAME SRC="menu.html" NAME="MENU">  <FRAME SRC="main1.html" NAME="MAIN"> </FRAMESET> </HTML> ※ブラウザ上での見易さを考慮して、全角スペースを使用しています。

kazu-kun
質問者

お礼

お答えありがとうございました。 こちらでも試してみたところ、特定の条件(*1)のもと、動作することが確認できました。 *1:このJavaScriptを実行するHTML文書と、reloadの対象となるHTML文書が、ともに同じサーバー上またはともにローカルにある時に限るようです。それ以外ではエラーになります。前回、上手く動作していなかったのはこのせいだったようです。 セキュリティ上の制限でこのようになっているのでしょうか? 私は、複数のサーバーにサイトを持っているので、この制限がないほうが良いのですが、おそらく無理ですよね? また、同じサーバーという判断がURLのどの部分で判断されているのか、が不明です。サーバー名のみで判断しているのか、パスの部分も含んでいるのですのかね? もし上記の疑問に回答をお持ちでしたら、再度回答いただければ幸いです。

すると、全ての回答が全文表示されます。
  • lucky111
  • ベストアンサー率30% (75/244)
回答No.3

Java ScriptやMETAタグを使わずにリロードさせるのは、私もわかりません。 ブラウザのリロードは、クライアント側の作業だと思うので、CGIなどのサーバー側のプログラムではできないと思います。 ちなみに、なぜJava ScriptやMETAタグが使えないのでしょう。

すると、全ての回答が全文表示されます。
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.2

frameset.htmは書き換えOKですか? だとすれば、frameset.htmに下記のJavaScript関数を加え、何らかのタイミングで呼び出せば目的の動作を行えます。 <SCRIPT language="JavaScript"><!-- function reload_frame() {   frames["MAIN"].location.reload();   setTimeout("reload_frame()", 60000): } //--></SCRIPT> 関数内の1行目が、フレームMAINのリロードを行います。 2行目で、この関数を60秒後に再実行するようにセットしています。 (setTimeoutの2番目の引数には、再実行までの時間をミリ秒単位で指定します。) また、この関数は初め外部から実行しなければならないため、BODYのonLoad辺りから呼び出すようにしておくとよいでしょう。 <BODY onLoad="reload_frame()">

kazu-kun
質問者

補足

教えていただいたのを参考にやってみていますが、未だ、上手く行っていません。全くリロードされません。onLoadは実行されているのは確かめたのですが。

すると、全ての回答が全文表示されます。
noname#1438
noname#1438
回答No.1

 フリーCGIプログラムのチャットで、2分割フレームになっているのを見たことがあります。  上のフレームで発言を記入するのですが、何もしなくとも下のフレーム(ログが表示されている)は指定した秒間が過ぎると自動リロードされました。  自動リロードという点から考えて、チャットプログラムを御参考にされてはいかがでしょうか。  Perl言語についてあまり詳しくないのでどこまでできるのかわかりませんが、応用で可能になるのではないかと思えたので、ご参考になればと思い書きました。  ただ、[MAINに表示させるページ内に、Java ScriptやMETAタグは追加できない条件]に合うかどうかもわたしには技量がなくて判断できませんが、、

kazu-kun
質問者

補足

お答えいただきましたが、よくあるチャットスクリプトの自動リロードは、METAタグを利用しているだけなので、今回使えないのです。

すると、全ての回答が全文表示されます。

関連するQ&A