Home > イヌでもわかるJavaScript講座 お品書き
イヌでもわかるJavaScript講座 お品書き へ戻ります
イヌでもわかるJavaScript講座


Step.39 - 「只今読込中!」の表示


ホームページを読みこんでいる最中は「只今、ホームページ読込中!」というメッセージを表示してみます。


Step テーマ
● document.getElementById().style.visibility - DIVタグの表示/非表示
● window.innerWidth - クライアント領域の幅  ~IE8  IE9~   FX   SF   OP   GC
● window.innerHeight - クライアント領域の高さ  ~IE8  IE9~   FX   SF   OP   GC
● document.body.clientWidth - クライアント領域の幅   IE   FX   SF   OP   GC
● document.body.clientHeight - クライアント領域の高さ   IE   FX   SF   OP   GC  

実行例


更新ボタンで再度確認できます。



リスト


<body onload="myOnLoad()">
<DIV id="mySplash" style="position:absolute;z-index:1;visibility:hidden;width:600px;height:140px;background-color:#FFFFFF;text-align:center;font-size:large;font-weight:bold;border-style:ridge">
<BR><BR>ただいまページ読み込み中。お待ちください。
</DIV>
<script type="text/javascript"><!--
myY = (window.innerHeight !== undefined) ? window.innerHeight : document.body.clientHeight;
myX = (window.innerWidth !== undefined) ? window.innerWidth : document.body.clientWidth;
myObj = document.getElementById("mySplash").style;
myObj.top = (myY/2-70 < 0) ? 0 : myY/2-70;
myObj.left = (myX/2-300 <0) ? 0 : myX/2-300;
myObj.visibility = "visible";
}

function myOnLoad(){
     myObj.visibility = "hidden";
}
// --></script>


サンプルだけの HTMLは こちらへ

説明


ホームページ読込(表示)中のときに「ただいまページ読み込み中。お待ちください。」というスプラッシュメッセージを表示して、訪問者に読込が終了するまで、待ってもらいます。

やりたいことは、簡単です。
ページ読み込み中の際に、

ただいまページ読み込み中。お待ちください。
<DIV id="mySplash" style="position:absolute;visibility:hidden;width:600px;height:140px;background-color:#FFFFFF;text-align:center;font-size:large;font-weight:bold;border-style:ridge">
<BR><BR>ただいまページ読み込み中。お待ちください。
</DIV>
を表示して、ページ読み込みが完了すれば、非表示にするだけです。


まず、スプラッシュウィンドウを画面の中央に表示させたいので、座標を求めました。
myY = (window.innerHeight !== undefined) ? window.innerHeight : document.body.clientHeight;
myX = (window.innerWidth !== undefined) ? window.innerWidth : document.body.clientWidth;
myObj = document.getElementById("mySplash").style;
myObj.top = (myY/2-70 < 0) ? 0 : myY/2-70;
myObj.left = (myX/2-300 <0) ? 0 : myX/2-300;
myObj.visibility = "visible";

画面の幅と高さを取得します。
  幅 = window.innerWidth;
  高さ = window.innerHeight;
旧IE であれば、
  幅 = document.body.clientWidth;
  高さ = document.body.clientHeight;
を使います。
myY = (window.innerHeight !== undefined) ? window.innerHeight : document.body.clientHeight;
myX = (window.innerWidth !== undefined) ? window.innerWidth : document.body.clientWidth;
※ window.innerHeight、window.innerWidth が使えない場合は、無条件に 旧IE とみなしています。
※ !== 演算子 は 値と型もチェックする厳密な比較をします。( != 演算子 は、値のみで型のチェックはありません )
    ( 1 == "1" ) の結果は「等しい」ですが、
    ( 1 === "1" ) の結果は「等しくない」です。
※ undefined は、未定義という意味の定数です。このプロパティはこのブラウザで使えるかといった時に使います。
※ 三項演算子 (条件)?真:偽 は、Step.3 参照。

その中央の座標なので、それぞれを 2で割って、さらに スプラッシュウィンドウのサイズの半分を引きます。
myObj.top = (myY/2-70 < 0) ? 0 : myY/2-70;
myObj.left = (myX/2-300 <0) ? 0 : myX/2-300;


スプラッシュウィンドウの表示/非表示は、
document.getElementById("mySplash").style.visibility
に、以下の文字列をセットします。
表示
非表示
"visible"
"hidden"
"mySplash" は、<DIV>タグのID属性に付けた名前です。
<DIV id="mySplash" style="position:absolute;visibility:hidden;width:600px;height:140px;background-color:#FFFFFF;text-align:center;font-size:large;font-weight:bold;border-style:ridge">


ページの読み込みが完了すれば、onload で、非表示用関数を呼びます。
<body onload="myOnLoad()">
function myOnLoad(){
     myObj.visibility = "hidden";
}




















 
イヌでもわかるJavaScript講座 お品書き へ戻ります