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

问题描述 投票:0回答:2

我多年来一直使用以下代码来检测浏览器客户端区域宽度,它对所有浏览器都 100% 有效,包括 FF、Safari 和各种版本的 IE。但是,现在当我切换到宽屏分辨率 (1280x800) 的新显示器时,此代码在 IE8 上失败。它报告客户端宽度为 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;
}
javascript client area widescreen
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)
}

0
投票

代码中检查

window.opera
并减去 16 像素的位令人担忧。 comp.lang.javascript 的常见问题解答对此有一个不错的实现

© www.soinside.com 2019 - 2024. All rights reserved.