JavaScript獲取網(wǎng)頁的寬高及如何兼容詳解
很多場景下會需要獲取當(dāng)前網(wǎng)頁的寬高來達(dá)到一些效果,但是獲取網(wǎng)頁的寬高這里面還是有一點(hen duo)坑的,這里我進(jìn)行了總結(jié)和詳解,若有補充歡迎評論補充~
方式一:window.innerWidth / window.innerHeight
這種方式只支持IE9以及以上版本的瀏覽器

網(wǎng)頁高度,打開F12控制臺當(dāng)然高度會不同
方式二:document.documentElement.clientWidth
console.log(document.documentElement); console.log(document.documentElement.clientWidth); console.log(document.documentElement.clientHeight);

document.documentElement獲取到的是HTML,從而獲取到了整個網(wǎng)頁
可用于IE9以下,當(dāng)然也支持IE9以及以上 可以用來兼容
方式三:混雜模式/怪異模式 下的寬高的獲取
怪異模式:沒有寫文檔聲明(就是第一行的那個< !DOCTYPE html >)就是怪異模式,這種模式下會有一些不同的渲染方式,感興趣的小伙伴可以去了解(這里講解的獲取寬高就是怪異模式特點之一)。
console.log(document.compatMode); console.log(document.body.clientWidth); console.log(document.body.clientHeight);
這樣獲取的方式只有在混雜模式下可以正確獲取
在標(biāo)準(zhǔn)模式下不會報錯,但是獲取到的寬高不是正確的
document.compatMode可以知道當(dāng)前文檔是混雜還是標(biāo)準(zhǔn)(BackCompat混雜,CSS1Compat標(biāo)準(zhǔn))


你以為結(jié)束了?
問題才出現(xiàn)!~
所以,問題來了:怎么兼容?(別認(rèn)為兼容不重要,不兼容就有很大的報錯風(fēng)險啊喂!畢竟你不知道用戶會不會用IE6打開網(wǎng)頁@_@)
封裝:兼容了高低版本瀏覽器,標(biāo)準(zhǔn)/混雜模式
function getWid_Hei(){
let width,height;
if(window.innerWidth){
width = window.innerWidth;
height = window.innerHeight;
}else if(document.compatMode === "BackCompat"){
width = document.body.clientWidth;
height = document.body.clientHeight;
}else{
width = document.documentElement.clientWidth;
height = document.documentElement.clientHeight;
}
return {
width:width,
height:height
}
}
let {width,height} = getWid_Hei();
console.log(width,height);
總結(jié)
到此這篇關(guān)于JavaScript獲取網(wǎng)頁的寬高及如何兼容的文章就介紹到這了,更多相關(guān)JS獲取網(wǎng)頁寬高內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- javascript獲取網(wǎng)頁寬高方法匯總
- javascript實現(xiàn)網(wǎng)頁中涉及的簡易運動(改變寬高、透明度、位置)
- JS獲取屏幕,瀏覽器窗口大小,網(wǎng)頁高度寬度(實現(xiàn)代碼)
- javascript獲取和判斷瀏覽器窗口、屏幕、網(wǎng)頁的高度、寬度等
- 獲取JS中網(wǎng)頁各種高寬與位置的方法總結(jié)
- JavaScript獲取網(wǎng)頁、瀏覽器、屏幕高度和寬度匯總
- javascript獲取網(wǎng)頁各種高寬及位置的方法總結(jié)
- JS獲取網(wǎng)頁屬性包括寬、高等等
- jQuery javascript獲得網(wǎng)頁的高度與寬度的實現(xiàn)代碼
相關(guān)文章
Javascript attachEvent傳遞參數(shù)的辦法
找了半天找到的解決辦法,看介紹說是javascript的閉包問題,導(dǎo)致得不能直接讀取外部的那個函數(shù),不然就所有傳遞的參數(shù)都變?yōu)樽詈笠粋€了。2009-12-12
bootstrap+jQuery 實現(xiàn)下拉菜單中復(fù)選框全選和全不選效果
這篇文章主要給大家介紹了關(guān)于利用bootstrap+jQuery 實現(xiàn)下拉菜單中復(fù)選框全選和全不選效果的相關(guān)資料,文中給出了完整的示例代碼供大家參考學(xué)習(xí),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友下面來一起看看吧。2017-06-06
JavaScript人臉識別技術(shù)及臉部識別JavaScript類庫Tracking.js
人臉識別的JavaScript程序包是Face Detection,它是由Jay Salvat和Liu Liu開發(fā)的。它是一個標(biāo)準(zhǔn)的jQuery插件,通過對提供的圖片進(jìn)行分析,返回所有找到的臉部圖像的坐標(biāo),感興趣的朋友跟著小編一起學(xué)習(xí)js人臉識別技術(shù)及臉部識別JavaScript類庫Tracking.js吧2015-09-09
array.prototype.silce.call 理解分析
在很多框架中與遇到這個方法,但一時沒去研究這個方法,只要前段時間被問到,尷尬無奈收場。所以學(xué)習(xí)就要追根究底的精神,廢話少說,說正題。2010-04-04
JavaScript必知必會(三) String .的方法來自何方
這篇文章主要介紹了JavaScript必知必會(三) String .的方法來自何方的相關(guān)資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下2016-06-06

