JavaScript - 获取浏览器高度

IT技术 javascript window height
2021-01-31 09:03:30

我正在寻找一个代码片段来获取浏览器窗口中可视区域的高度。

我有这个代码,但是它有点错误,好像身体没有超过窗口的高度然后它变短了。

document.body.clientHeight;

我尝试了其他一些东西,但它们要么返回 NaN 要么返回与上述相同的高度。

有谁知道如何获得浏览窗口的真实高度?

6个回答

你会想要这样的东西,取自http://www.howtocreate.co.uk/tutorials/javascript/browserwindow

function alertSize() {
  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;
  }
  window.alert( 'Width = ' + myWidth );
  window.alert( 'Height = ' + myHeight );
}

所以这innerHeight适用于现代浏览器,documentElement.clientHeightIE,body.clientHeight弃用/怪癖。

尝试使用 jquery:

window_size = $(window).height();

您可以使用 window.innerHeight

我们不需要支持 Internet Explorer :) 如果必须,请尝试使用 document.documentElement.clientHeight 或使用 jquery。
2021-04-03 09:03:30

我喜欢这样做的方式是使用三元赋值。

 var width = isNaN(window.innerWidth) ? window.clientWidth : window.innerWidth;
 var height = isNaN(window.innerHeight) ? window.clientHeight : window.innerHeight;

我可能会指出,如果你在全局上下文中运行它,从那时起你可以使用 window.height 和 window.width。

据我所知,可以在 IE 和其他浏览器上运行(我只在 IE11 上测试过)。

超级干净,如果我没记错的话,效率很高。

第一个原因是仅定义了两个属性中的一个,具体取决于所使用的浏览器类型。至于为什么不只使用合并运算符,技术上应该在定义项目时使用,但其中之一可能是一些错误值。Chrome 足够聪明,仍然可以给出一个值,但至少在历史上,Firefox 会抱怨第一个变量不存在。不知道现在怎么样了,但这就是原因。
2021-03-16 09:03:30
好的,仅供参考,我在最新版本的 Firefox、Chrome、Safari 和 IE Edge 中对此进行了测试。在未定义的变量上使用 coalesce 效果很好,所以看起来这个问题已经解决了。所以考虑到这一点,你更喜欢使用三元语句而不是合并形式的唯一原因是出于个人风格的原因,或者你可以支持旧浏览器。请记住,在编写此 andwer 时,我们必须支持 IE6 和 FF3,如果非要我猜的话,我会说是 FF3 存在合并语法的问题。
2021-03-20 09:03:30
我很想知道var width = window.innerWidth || window.clientWidth;不使用该模式是否存在技术原因
2021-03-30 09:03:30

有一种比一大堆 if 语句更简单的方法。使用或 (||) 运算符。

function getBrowserDimensions() {
  return {
    width: (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth),
    height: (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight)
  };
}

var browser_dims = getBrowserDimensions();

alert("Width = " + browser_dims.width + "\nHeight = " + browser_dims.height);