特性检测:@cc_on
我们可以用 IE 私有的条件编译(conditional compilation)
结合条件注释来提供针对 ie10 的 Hack:该脚本里面的IE排除条件注释,以确保 IE6-9 不承认它,然后它功能检测到了名为 @ cc_on
。
代码如下:
<!--[if !IE]><!--><script>
if (/*@cc_on!@*/false) {
document.documentElement.className+=' ie10';
}
</script><!--<![endif]-->
请注意 /*@cc_on ! @*/
中间的这个感叹号。
这样就可以在 ie10 中给 html 元素添加一个 class=”ie10″
,然后针对ie10的样式可以卸载这个这个选择器下:
代码如下:
.ie10 .example {
/* IE10-only styles go here */
}
考虑到兼容以后的IE版本,比如 IE11,js 代码可以改一下:
复制代码代码如下:
if (/*@cc_on!@*/false) {
document.documentElement.className+=' ie' + document.documentMode;
}
事实上经测试预览版的IE11已经不支持 @ cc_on
语句,不知道正式版会不会支持。不过这样区分 IE11 倒是一件好事。这样修改代码:
<script>
// 针对IE10
if (/*@cc_on!@*/false) {
document.documentElement.className += ' ie' + document.documentMode;
}
// 针对IE11及非IE浏览器,
// 因为IE11下document.documentMode为11,所以html标签上会加ie11样式类;
// 而非IE浏览器的document.documentMode为undefined,所以html标签上会加ieundefined样式类。
if (/*@cc_on!@*/true) {
document.documentElement.className += ' ie' + document.documentMode;
}
</script>