document.compatMode主要是用来判断浏览器采用何种方式渲染,它有两种可能的返回值:BackCompat和CSS1Compat,官方对其解释如下:
BackCompat:标准兼容模式关闭,向后兼容模式。
CSS1Compat:标准兼容模式开启。
当document.compatMode等于BackCompat时,浏览器客户区宽度是document.body.clientWidth;
当document.compatMode等于CSS1Compat时,浏览器客户区宽度是document.documentElement.clientWidth。
浏览器客户区高度、滚动条高度、滚动条的Left、滚动条的Top等等都是上面的情况。
一个准确获取网页客户区的宽高、滚动条宽高、滚动条Left和Top的代码:
1 if (document.compatMode == "BackCompat") { 2 cWidth = document.body.clientWidth; 3 cHeight = document.body.clientHeight; 4 sWidth = document.body.scrollWidth; 5 sHeight = document.body.scrollHeight; 6 sLeft = document.body.scrollLeft; 7 sTop = document.body.scrollTop; 8 } 9 else { 10 //document.compatMode == "CSS1Compat" 11 cWidth = document.documentElement.clientWidth; 12 cHeight = document.documentElement.clientHeight; 13 sWidth = document.documentElement.scrollWidth; 14 sHeight = document.documentElement.scrollHeight; 15 sLeft = document.documentElement.scrollLeft == 0 ? document.body.scrollLeft : document.documentElement.scrollLeft; 16 sTop = document.documentElement.scrollTop == 0 ? document.body.scrollTop : document.documentElement.scrollTop; 17 }
(以上代码兼容目前流行的全部浏览器,包括:IE、Firefox、Safari、Opera、Chrome)