今天在看架構的時候無意間看到了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;}