如何判断IE真正渲染内核(文档模式)
1、IE自IE8开始区分浏览器模式与文档模式(早期叫文本模式),允许用户手动变更两个模式,也允许开发者通过 X-UA-Compatible 标记需要使用的文档模式,同时还提供了 document.documentMode 属性以供开发者判断正在使用的文档模式。
2、由于文档模式决定了CSS和JS渲染引擎,当我们为兼容工作判断不同IE版本时,不需要通过 UA 判断,直接通过 document.documentMode 属性即可。
文档模式只代表当前使用的渲染内核,并不等于当前浏览器的真正版本。例如,当IE11模拟IE8时,文档模式返回结果会是8。
需要注意的是,文档模式决定了 if IE 条件注释会不会执行,如果文档模式是 8,那么 <!––[if IE 8]> 语句也会执行。
3、document.documentMode 属性值是数字,如下所示:
5 怪异模式时返回5
7 模拟IE7时返回7
8 模拟IE8或当前是IE8时返回8
9 模拟IE9或当前是IE9时返回9
10 模拟IE10或当前是IE10时返回10
11 当前是IE11时返回11
1、判断当前文档模式是否IE8标准模式,代码如下所示:
<script>
if (document.documentMode == 8) {
alert('当前文档模式是IE8,你正在使用IE8访问,或者设置了IE8兼容性识图。');
} else {
alert('当前文档模式不是IE8');
}
</script>
2、如果文档模式低于等于IE10就跳转到IE浏览器升级提示页,代码如下所示:
<script>
/*@cc_on
if (! document.documentMode || document.documentMode <= 10) {
window.location.href='http://support.dmeng.net/upgrade-your-browser.html?referrer='+encodeURIComponent(window.location.href);
}
@*/
</script>
@cc_on 是 IE10 及旧版IE特有的条件编译语句,因此可以用来判断是否除IE11版本以外的IE浏览器。
! document.documentMode 是为了匹配 IE6/IE7 ,因为 document.documentMode 是 IE8 才新增的属性,在 IE6/IE7 中没有。