【发布时间】:2012-04-11 14:53:14
【问题描述】:
对于某些情况,如 Internet Explorer 特定的 CSS 或 Internet Explorer 特定的 JavaScript 代码,我如何仅针对 Internet Explorer 10?
我试过了,但它不起作用:
<!--[if IE 10]> <html class="no-js ie10" lang="en"> <![endif]-->
<!--[if !IE]><!--> <html lang="en" class="no-js"> <!--<![endif]-->
Internet Explorer 10 忽略条件 cmets 并使用 <html lang="en" class="no-js"> 而不是 <html class="no-js ie10" lang="en">。
【问题讨论】:
-
我认为更好的问题是:如何让这个 CSS 在两个浏览器上看起来一样?
-
IE10 PP4 仍然支持
@cc_onstatement。因此,要检测是否支持 IE10,可以使用以下代码:<!--[if !IE]><!--><script>if(/*@cc_on!@*/false){document.documentElement.className+=' ie10';}</script><!--<![endif]-->。 (我把这个作为评论发了,因为IE还在开发中,所以不知道最终版本是否也支持这个功能) -
@RobW - 一旦 ie11 出来,您的示例代码就会出错。改进版:
<script>if(Function('/*@cc_on return document.documentMode===10@*/')()){document.documentElement.className+=' ie10';}</script>改进:不需要条件 cmets;即使评论剥离压缩/处理也有效;没有为 ie11 添加类;将与在 ie10 兼容模式下运行的 ie11 一起工作;不需要独立的脚本标签(可以添加到头部的其他 javascript 中)。 -
上述代码示例 sn-p:jsbin.com/upofoq/2
-
更通用的解决方案是:
if(document.documentMode) document.documentElement.className+=' ie'+document.documentMode+'mode';- 它解决了 90% 的问题(有时兼容模式会失败,在这种情况下,您需要在此基础上再进行其他级别的修复)。
标签: javascript html css internet-explorer-10 conditional-comments