dポイントプレゼントキャンペーン実施中!

皆様、いつもお世話になっております。
CGIでデータベースを使用して作成した重たいwebページを表示する前に
「しばらくお待ちください」のメッセージを同じページに表示したいのですがどうすればいいのでしょうか? そんな TAG はありませんでしょうか? どうぞご教授お願いいたします。

A 回答 (3件)

MovableTypeなどのインストール画面はプログレス表示になっていて、実行が終わったところまでを順次表示していきますよね?



いったん「しばらくお待ちください」までをブラウザに返しておいて、bodyタグのonLoadのJavaScriptで、その表示をCSSでdispkay:noneに替えてしまうというのはどうでしょう。

「しばらくお待ちください」までを返した状態でブラウザがキチンとレンダリングできるように、うまく(そこまでの)HTMLを組み立てないといけないとか、ブラウザがキャッシュしないように最後にasciiの空白をたくさんくっつけて送るとか・・はあるでしょうけど。

#未検証なのであしからず(汗
    • good
    • 0
この回答へのお礼

shimix さんありがとございます。
お名前を間違えました shimix さんですね。失礼いたしました。

お礼日時:2008/05/16 06:40

#言語は何であっても同じです。



サーバからブラウザへ送られた内容は順次表示されます。ただしあとの内容が返ってこないとレンダリング出来ないような場合には止まります(テーブルなど)。なので、順次ブラウザへ送り返してやれば返したものから表示してくれます。

で、一度表示したもの(=しばらくお待ちください)を消すためにはJavaSctiptなどを使うしかないと思います。

(蛇足)
私もWin32アプリではDelphiを使ってます。webアプリも少し作ったのですが、普通のサーバ(Unix)でも動かしたくてphpに移行しました。
    • good
    • 0
この回答へのお礼

shimix様 
大変、参考になりました。ありがとうございました。
理解するのに時間がかかったり、「教えて!goo」の使い方をわかってなかったりで、お礼がおそくなりました。感謝します。

お礼日時:2008/05/20 09:05

ANo.1です。

ちょっと試してみました。phpはシステムが標準でバッファリングするのでその関係の関数が余分になっちゃってます。

  <html>
  <head><title>test</title>
  <script language="JavaScript" type="text/javascript"><!--
  function hide() {
    document.getElementById('preset').style.display = "none";
  }
  //--></script>
  </head>
  <body onLoad=hide()>
  <?php
  ob_end_flush();
  ob_start('mb_output_handler');
  $i = 0;
  while ($i < 99) {
    print ' ';
    ob_flush();
    $i++;
    }
  print '<div id="preset">お待ちください</div>' . "\n";
  ob_flush();
  flush();
  sleep(5);
  ?>
  <div>結果表示です</div>
  </body>
  </html>
    • good
    • 0
この回答へのお礼

ANo.1様 ありがとうございます。
お礼が遅れまして申し訳ありません(パスワード忘れです)失礼いたしました。
PHP は全くわからないのですが、インタプリンタですか?JavaScript で制御できるのでしようか?本当に情けないのですが理解できませんでした。どうぞお許しください。
私は開発ツールにDelphiを使用しています。ご存知でしたらよろしくお願いいたします。

お礼日時:2008/05/16 06:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!