今天在看框架的时候无意间看到了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;
}
新闻热点
疑难解答