4

私は次のコードを使用してブラウザのクライアント領域の幅を何年も検出してきましたが、FF、Safari、さまざまなバージョンの IE を含むすべてのブラウザで 100% 機能しました。ただし、ワイドスクリーン解像度 (1280x800) の新しいモニターに切り替えると、このコードは IE8 で失敗します。それは 1024 の clientwidth を報告します !!!???

正しいクライアント領域の幅を取得する方法はありますか?

function getClientWidth() {
  var v=0,d=document,w=window;
  if((!d.compatMode || d.compatMode == 'CSS1Compat') && !w.opera && d.documentElement && d.documentElement.clientWidth)
    {v=d.documentElement.clientWidth;}
  else if(d.body && d.body.clientWidth)
    {v=d.body.clientWidth;}
  else if(xDef(w.innerWidth,w.innerHeight,d.height)) {
    v=w.innerWidth;
    if(d.height>w.innerHeight) v-=16;
  }
  return v;
}
4

2 に答える 2

5

少し前に使用した非jqueryコード:

function detectBrowserSize() {
    var myWidth = 0, myHeight = 0;
    if (typeof (window.innerWidth) == 'number') {
        //Non-IE
        myWidth = window.innerWidth;
        myHeight = window.innerHeight;
    } else if (document.documentElement && (document.documentElement.clientWidth ||   document.documentElement.clientHeight)) {
        //IE 6+ in 'standards compliant mode'
        myWidth = document.documentElement.clientWidth;
        myHeight = document.documentElement.clientHeight;
    } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
        //IE 4 compatible
        myWidth = document.body.clientWidth;
        myHeight = document.body.clientHeight;
    }
    alert(myWidth + ' - ' + myHeight)
}
于 2011-06-20T08:54:47.397 に答える
0

window.opera16ピクセルをチェックして減算するコードのビットが心配です。comp.lang.javascriptのFAQには、これの適切な実装があります

于 2009-10-19T08:47:49.023 に答える