- ベストアンサー
ページ読み込み中に「ロード中」と表示させる方法
- ページを読み込み開始してから読み込み終了までの間に「ロード中」と表示させる方法についてアドバイスをいただきたいです。
- http://okwave.jp/qa/q2753468.htmlを参考にしたが、「ロード中」という表示がされなかったため、どのように書けば良いか分かりません。
- ブラウザ上に「ロード中」と表示させ、しばらくたった後に「ロード中」を消して「本文です」と表示させたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
きっちりやるならやはりajaxで処理する方がよいでしょう viewdata.php <script> function createXMLHttpRequest(){ if( window.XMLHttpRequest ){ return new XMLHttpRequest(); }else if( window.ActiveXObject ){ try{ return new ActiveXObject( "Msxml2.XMLHTTP" ); }catch(e){ return new ActiveXObject( "Microsoft.XMLHTTP" ); } } return null; } function getData( serverURL, objID ){ var ajax = createXMLHttpRequest(); ajax.open( "GET", serverURL ); ajax.onreadystatechange=function(){ if(( ajax.readyState == 4 ) && ( ajax.status == 200 )){ if(objID!=""){ var obj = document.getElementById( objID ); obj.innerHTML = ajax.responseText; } } } ajax.send( '' ); } window.onload=function(){ document.getElementById("hoge").innerHTML="loading ..." getData("loaddata.php","hoge"); } </script> <div id="hoge"></div> //loaddata.php <? sleep(3); ?> success!
その他の回答 (1)
- JaneDue
- ベストアンサー率75% (263/350)
確認したところSafariがダメ、その他メジャーなブラウザはOKでしたので、バッファリングの問題かと。 サーバ側で出力したからといってすぐに表示されるわけではなく、Apacheやブラウザはある程度のデータ量をまとめて送信/表示します。このためデータ量が少ない場合、意図したとおりに表示されないことがあります。 試しに div「ロード中」の前に十分な文字列を加えてみて下さい。 (ちなみにSafariでは 350byteほど 足してやると動作しました) 蛇足ながら、確かブラウザにより、きちんと table タグが閉じられるまではテーブル内のコンテンツは一切表示されないということもありましたので、table内に配置している場合は要注意です。
お礼
ご回答ありがとうございます。 ご指摘のように十分な文字を追加した所、意図した動作となりました。 このたびはどうもありがとうございました。 以上、よろしくお願いします。
お礼
ご回答ありがとうございます。 ご教示いただいたソースで意図した動作となりました。 このたびはどうもありがとうございました。 以上、よろしくお願いします。