js獲取網(wǎng)頁高度(詳細(xì)整理)
網(wǎng)頁可見區(qū)域?qū)挘?document.body.clientWidth
網(wǎng)頁可見區(qū)域高: document.body.clientHeight
網(wǎng)頁可見區(qū)域?qū)挘?document.body.offsetWidth (包括邊線的寬)
網(wǎng)頁可見區(qū)域高: document.body.offsetHeight (包括邊線的高)
網(wǎng)頁正文全文寬: document.body.scrollWidth
網(wǎng)頁正文全文高: document.body.scrollHeight
網(wǎng)頁被卷去的高: document.body.scrollTop
網(wǎng)頁被卷去的左: document.body.scrollLeft
網(wǎng)頁正文部分上: window.screenTop
網(wǎng)頁正文部分左: window.screenLeft
屏幕分辨率的高: window.screen.height
屏幕分辨率的寬: window.screen.width
屏幕可用工作區(qū)高度: window.screen.availHeight
屏幕可用工作區(qū)寬度: window.screen.availWidth
<script>
function getInfo()
{
var s = "";
s += " 網(wǎng)頁可見區(qū)域?qū)挘?+ document.body.clientWidth;
s += " 網(wǎng)頁可見區(qū)域高:"+ document.body.clientHeight;
s += " 網(wǎng)頁可見區(qū)域?qū)挘?+ document.body.offsetWidth + " (包括邊線和滾動(dòng)條的寬)";
s += " 網(wǎng)頁可見區(qū)域高:"+ document.body.offsetHeight + " (包括邊線的寬)";
s += " 網(wǎng)頁正文全文寬:"+ document.body.scrollWidth;
s += " 網(wǎng)頁正文全文高:"+ document.body.scrollHeight;
s += " 網(wǎng)頁被卷去的高(ff):"+ document.body.scrollTop;
s += " 網(wǎng)頁被卷去的高(ie):"+ document.documentElement.scrollTop;
s += " 網(wǎng)頁被卷去的左:"+ document.body.scrollLeft;
s += " 網(wǎng)頁正文部分上:"+ window.screenTop;
s += " 網(wǎng)頁正文部分左:"+ window.screenLeft;
s += " 屏幕分辨率的高:"+ window.screen.height;
s += " 屏幕分辨率的寬:"+ window.screen.width;
s += " 屏幕可用工作區(qū)高度:"+ window.screen.availHeight;
s += " 屏幕可用工作區(qū)寬度:"+ window.screen.availWidth;
s += " 你的屏幕設(shè)置是 "+ window.screen.colorDepth +" 位彩色";
s += " 你的屏幕設(shè)置 "+ window.screen.deviceXDPI +" 像素/英寸";
//alert (s);
}
getInfo();
</script>
在我本地測試當(dāng)中:
在IE、FireFox、Opera下都可以使用
document.body.clientWidth
document.body.clientHeight
即可獲得,很簡單,很方便。
而在公司項(xiàng)目當(dāng)中:
Opera仍然使用
document.body.clientWidth
document.body.clientHeight
可是IE和FireFox則使用
document.documentElement.clientWidth
document.documentElement.clientHeight
原來是W3C的標(biāo)準(zhǔn)在作怪啊
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
如果在頁面中添加這行標(biāo)記的話
在IE中:
document.body.clientWidth ==> BODY對(duì)象寬度
document.body.clientHeight ==> BODY對(duì)象高度
document.documentElement.clientWidth ==> 可見區(qū)域?qū)挾?
document.documentElement.clientHeight ==> 可見區(qū)域高度
在FireFox中:
document.body.clientWidth ==> BODY對(duì)象寬度
document.body.clientHeight ==> BODY對(duì)象高度
document.documentElement.clientWidth ==> 可見區(qū)域?qū)挾?
document.documentElement.clientHeight ==> 可見區(qū)域高度
?
在Opera中:
document.body.clientWidth ==> 可見區(qū)域?qū)挾?
document.body.clientHeight ==> 可見區(qū)域高度
document.documentElement.clientWidth ==> 頁面對(duì)象寬度(即BODY對(duì)象寬度加上Margin寬)
document.documentElement.clientHeight ==> 頁面對(duì)象高度(即BODY對(duì)象高度加上Margin高)
而如果沒有定義W3C的標(biāo)準(zhǔn),則
IE為:
document.documentElement.clientWidth ==> 0
document.documentElement.clientHeight ==> 0
FireFox為:
document.documentElement.clientWidth ==> 頁面對(duì)象寬度(即BODY對(duì)象寬度加上Margin寬)document.documentElement.clientHeight ==> 頁面對(duì)象高度(即BODY對(duì)象高度加上Margin高)
Opera為:
document.documentElement.clientWidth ==> 頁面對(duì)象寬度(即BODY對(duì)象寬度加上Margin寬)document.documentElement.clientHeight ==> 頁面對(duì)象高度(即BODY對(duì)象高度加上Margin高)
真是一件麻煩事情,其實(shí)就開發(fā)來看,寧可少一些對(duì)象和方法,不使用最新的標(biāo)準(zhǔn)要方便許多啊。
有時(shí)候需要取頁面的底部, 就會(huì)用到document.body.clientHeight , 在HTML 標(biāo)準(zhǔn)中(這一句就能取到整個(gè)頁面的高度, 不論body 的實(shí)際內(nèi)容到底有多高, 例如, 1074*768 的分辨率, 頁面最大化時(shí), 這個(gè)高度約為720 , 即使頁面上只有一句”hello world” , 也仍然取到720.
可是在XHTML中, 如果body 體中只有一行, 則document.body.clientHeight 只能取到那一行的高度, 約20px, 這時(shí)如何還想取到整個(gè)頁面的高度, 就要用document.documentElement.clientHeight 來獲取了.
原因是: 在HTML 中, body 是整個(gè)DOM 的根, 而在XHTML 中, document 才是根, body 不再是根, 所以取body 的屬性時(shí), 不能再取到整個(gè)頁面的值.
區(qū)別新舊標(biāo)準(zhǔn)的行是:
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN” >
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>
前者指明該頁面使用舊標(biāo)準(zhǔn), 后者指明該頁面使用新標(biāo)準(zhǔn).
總結(jié):
XHTML中用 document.documentElement.clientHeight 代替
document.body.clientHeight
相關(guān)文章
javascript實(shí)現(xiàn)文字無縫滾動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)文字無縫滾動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08JavaScript判斷表單中多選框checkbox選中個(gè)數(shù)的方法
這篇文章主要介紹了JavaScript判斷表單中多選框checkbox選中個(gè)數(shù)的方法,涉及javascript針對(duì)checkbox復(fù)選框的遍歷與判斷技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08js 時(shí)間格式與時(shí)間戳的相互轉(zhuǎn)換示例代碼
很多的新手朋友們對(duì)js中的時(shí)間格式與時(shí)間戳的轉(zhuǎn)換比較陌生,下面就為大家詳細(xì)介紹下具體的轉(zhuǎn)換步驟,感興趣的朋友可以參考下2013-12-12pace.js和NProgress.js兩個(gè)加載進(jìn)度插件的一點(diǎn)小總結(jié)
這兩個(gè)插件都是關(guān)于加載進(jìn)度動(dòng)畫的,今天就和大家一起了解下pace.js和NProgress.js兩個(gè)加載進(jìn)度插件的一點(diǎn)小總結(jié),感興趣的朋友一起看看吧2018-01-01iframe的onreadystatechange事件在firefox下的使用
firefox不支持iframe的onreadystatechange事件,不過有個(gè)方法可以實(shí)現(xiàn)同等的效果,需要的朋友可以參考下2014-04-04使用Promise鏈?zhǔn)秸{(diào)用解決多個(gè)異步回調(diào)的問題
這篇文章主要給大家介紹了使用Promise鏈?zhǔn)秸{(diào)用解決多個(gè)異步回調(diào)問題的方法,文中給出了詳細(xì)的介紹和示例代碼,有需要的朋友可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧。2017-01-01javascript創(chuàng)建含數(shù)字字母的隨機(jī)字符串方法總結(jié)
如果想創(chuàng)建一個(gè)含有數(shù)字、字母(大小寫)或者符號(hào)的字符串,比如從[a-zA-Z0-9]集合中中創(chuàng)建一個(gè)隨機(jī)的字符串,長度為5.有沒有什么比較好的代碼呢?本文提供了幾種方法,包括自動(dòng)改變字符集合。一起來學(xué)習(xí)下。2016-08-08