2008年11月27日木曜日

クライアントの表示領域を得る

FireFoxなら、何も考えずに
window.innerHeight
で取得できる。
IEの場合が厄介で、標準モードと互換モードで取得方法が異なる・・・・
標準モードの場合、
document.documentElement.clientHeight
互換モードの場合は
document.body.clientHeight

標準モードで
document.body.clientWidth
を使用すると、値は返ってくるけど、どうやら、表示領域ではなく、レンダリングされたBODYエレメントの高さを返すっぽい。

ある意味、本来の動きなんだろうけど、それなら
window.innerHeight
を実装してくれと・・・
if(typeof window.innerHeight == "undefined"){
   window.prototype.innerHeight = function(){
      if(document.compatMode=='CSS1Compat'){
         return document.documentElement.clientHeight;
      }else{
         return document.body.clientHeight;
      }
   }
}
とかやっておいたらいいのか・・・
とりあえず関数化。


function getWindowHeight (){
   if(typeof window.innerHeight != "undefined"){
      return window.innerHeight;
   }else if(document.compatMode=='CSS1Compat'){
      return document.documentElement.clientHeight;
   }else{
      return document.body.clientHeight;
   }
}

0 件のコメント:

コメントを投稿