关于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正好派上用场,它有两种可能的返回值:BackCompat和CSS1Compat,对其解释如下:
BackCompat: Standards-compliant mode is not switched on. (Quirks Mode)
CSS1Compat: Standards-compliant mode is switched on. (Standards Mode)
在实际的项目中,我们还需要在获取浏览是否IE,这样就可以得到IE的渲染模式了。
在Ext中的代码:
var isStrict = document.compatMode == "CSS1Compat",
isIE = !isOpera && ua.indexOf("msie") > -1,
isBorderBox=isIE&&!isStrict;
当文档有了标准声明时, document.compatMode 的值就等于 "CSS1compat", 因此, 我们可以根据 document.compatMode 的值来判断文档是否加了标准声明
posted on 2011-10-21 16:34 xjjrain2011 阅读(87) 评论(0) 收藏 举报
浙公网安备 33010602011771号