关于document.compatMode

 1 var idSeed = 0,
2 ua = navigator.userAgent.toLowerCase(),
3 check = function (r) {
4 return r.test(ua)
5 },
6 isStrict = document.compatMode == "CSS1Compat",
7 isOpera = check(/opera/),
8 isChrome = check(/chrome/),
9 isWebKit = check(/webkit/),
10 isSafari = !isChrome && check(/safari/),
11 isSafari3 = isSafari && check(/version\/3/),
12 isSafari4 = isSafari && check(/version\/4/),
13 isIE = !isOpera && check(/msie/),
14 isIE6 = isIE && check(/msie 6/),
15 isIE7 = isIE && check(/msie 7/),
16 isIE8 = isIE && check(/msie 8/),
17 isIE9 = isIE && check(/msie 9/),
18 isGecko = !isWebKit && check(/gecko/),
19 isGecko3 = isGecko && check(/rv:1\.9/),
20 isBorderBox = isIE && !isStrict,
21 isWindows = check(/windows|win32/),
22 isMac = check(/macintosh|mac os x/),
23 isAir = check(/adobeair/),
24 isLinux = check(/linux/),
25 isSecure = /^https/i.test(window.location.protocol);

上面是58的一段代码,里面有:document.compatMode

不知道是用来干啥的,后来发现一个同园的前辈:AlvinXiao的一篇介绍,才明白点

IE对盒模型的渲染在 Standards Mode和Quirks Mode是有很大差别的,在Standards Mode下对于盒模型的解释和其他的标准浏览器是一样,但在Quirks Mode模式下则有很大差别,而在不声明Doctype的情况下,IE默认又是Quirks Mode。所以为兼容性考虑,我们可能需要获取当前的文档渲染方式。 
 
      document.compatMode正好派上用场,它有两种可能的返回值:BackCompatCSS1Compat,对其解释如下: 
BackCompat: Standards-compliant mode is not switched on. (Quirks Mode) 
CSS1Compat: Standards-compliant mode is switched on. (Standards Mode) 
     在实际的项目中,我们还需要在获取浏览是否IE,这样就可以得到IE的渲染模式了。
在Ext中的代码:

var ua = navigator.userAgent.toLowerCase();
var isStrict = document.compatMode == "CSS1Compat"
    isIE 
= !isOpera && ua.indexOf("msie"> -1,
    isBorderBox
=isIE&&!isStrict;


当文档有了标准声明时, document.compatMode 的值就等于 "CSS1compat", 因此, 我们可以根据 document.compatMode 的值来判断文档是否加了标准声明 

var height = document.compatMode=="CSS1Compat" ? document.documentElement.clientHeight : document.body.clientHeight;

posted on 2011-10-21 16:34  xjjrain2011  阅读(87)  评论(0)    收藏  举报

导航