使用javascript检测宽屏幕上的浏览器客户端区域大小

使用javascript检测宽屏幕上的浏览器客户端区域大小,javascript,client,area,widescreen,Javascript,Client,Area,Widescreen,多年来,我一直在使用下面的代码来检测浏览器客户端区域的宽度,所有浏览器,包括FF、Safari和各种版本的IE,它都能100%工作。然而,现在,当我切换到具有宽屏分辨率(1280x800)的新显示器时,这段代码在IE8上失败。它报告clientwidth为1024 如何获得正确的客户区宽度 function getClientWidth() { var v=0,d=document,w=window; if((!d.compatMode || d.compatMode == 'CSS1C

多年来,我一直在使用下面的代码来检测浏览器客户端区域的宽度,所有浏览器,包括FF、Safari和各种版本的IE,它都能100%工作。然而,现在,当我切换到具有宽屏分辨率(1280x800)的新显示器时,这段代码在IE8上失败。它报告clientwidth为1024

如何获得正确的客户区宽度

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;
}

代码中检查
window.opera
和减去16个像素的位令人担忧。comp.lang.javascript的常见问题解答有一个。

我不久前使用的非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)
}

因为什么时候是1280x1024宽屏?哎呀,它实际上是1280x800,但这并没有改变Javascript认为屏幕宽度是1004的事实。我同意它看起来不好,但它工作正常。这应该是滚动条的原因。我会检查你的链接,10倍。代码不错。我会想错的。我试图用它来显示一个对话框死点。因此,我添加了以下内容:topMargin=(viewportheight+(detectBrowserHeight()/2))-(divInner.offsetHeight/2);divInner是我显示为对话框的div