JavaScript – 获取浏览器高度
我正在寻找一个代码片段来获取浏览器窗口内的可视区域的高度。
我有这个代码,但是它有一些bug,就好像身体没有超过窗口的高度,然后又回来了。
document.body.clientHeight; 我已经尝试过其他一些东西,但是要么返回NaN,要么与上面的高度相同。
有谁知道如何获得浏览窗口的真正高度?
你会想要这样的,从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 ,IE的documentElement.clientHeight ,不赞成使用/ quirks的body.clientHeight 。 
尝试使用jQuery:
 window_size = $(window).height(); 
 你可以使用window.innerHeight 
我喜欢这样做的方式就像是一个三元的任务。
  var width = isNaN(window.innerWidth) ? window.clientWidth : window.innerWidth; var height = isNaN(window.innerHeight) ? window.clientHeight : window.innerHeight; 
我可能会指出,如果在全局上下文中使用window.height和window.width,
IE浏览器和其他浏览器的作品据我所知(我只在IE11上testing过)。
超级干净,如果我没有错,高效。
有一个简单的方法比一大堆if语句。 使用or(||)运算符。
 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); 
这也应该起作用。 首先创build绝对位置和100%高度的绝对div元素:
 <div id="h" style="position:absolute;top:0;bottom:0;"></div> 
 然后,通过offsetHeight从该元素获取窗口高度 
 var winHeight = document.getElementById('h').offsetHeight; 
我更喜欢我刚想出来的方式…没有JS … 100%的HTML和CSS:
(无论内容大小如何,它都会在中间完美alignment。
HTML文件
 <html><head> <link href="jane.css" rel="stylesheet" /> </head> <body> <table id="container"> <tr> <td id="centerpiece"> 123 </td></tr></table> </body></html> 
CSS文件
 #container{ border:0; width:100%; height:100%; } #centerpiece{ vertical-align:middle; text-align:center; } 
为了在td内保持图像/ div居中,你可以尝试使用margin:auto; 并指定一个div尺寸。 – 尽pipe如此,说'文本alignment'属性将不仅仅是一个简单的文本元素。
JavaScript版本的情况下,如果jQuery不是一个选项。
window.screen.availHeight
 var winWidth = window.screen.width; var winHeight = window.screen.height; document.write(winWidth, winHeight); 
 有了JQuery,你可以试试$(window).innerHeight() (适用于Chrome,FF和IE)。 使用bootstrap模式,我使用了类似下面的内容; 
 $('#YourModal').on('show.bs.modal', function () { $('.modal-body').css('height', $(window).innerHeight() * 0.7); });