今天在看框架的時候無意間看到了document.compatmode,經過一番資料查找,終于搞懂了。
文檔模式在開發中貌似很少用到,最常見的是就是在獲取頁面寬高的時候,比如文檔寬高,可見區域寬高等。
ie對盒模型的渲染在 standards mode和quirks mode是有很大差別的,在standards mode下對于盒模型的解釋和其他的標準瀏覽器是一樣,但在quirks mode模式下則有很大差別,而在不聲明doctype的情況下,ie默認又是quirks mode。所以為兼容性考慮,我們可能需要獲取當前的文檔渲染方式。
document.compatmode正好派上用場,它有兩種可能的返回值:backcompat和css1compat。
backcompat:標準兼容模式關閉。瀏覽器客戶區寬度是document.body.clientwidth;css1compat:標準兼容模式開啟。 瀏覽器客戶區寬度是document.documentelement.clientwidth。
那么寫了個準確獲取網頁客戶區的寬高、滾動條寬高、滾動條left和top的代碼:
if (document.compatmode == "backcompat") {
cwidth = document.body.clientwidth;
cheight = document.body.clientheight;
swidth = document.body.scrollwidth;
sheight = document.body.scrollheight;
sleft = document.body.scrollleft;
stop = document.body.scrolltop;
}
else { //document.compatmode == "css1compat"
cwidth = document.documentelement.clientwidth;
cheight = document.documentelement.clientheight;
swidth = document.documentelement.scrollwidth;
sheight = document.documentelement.scrollheight;
sleft = document.documentelement.scrollleft == 0 ? document.body.scrollleft : document.documentelement.scrollleft;
stop = document.documentelement.scrolltop == 0 ? document.body.scrolltop : document.documentelement.scrolltop;
}
新聞熱點
疑難解答