如果IE条件不起作用

The*_*ker 22 html internet-explorer conditional comments

我一直在疯狂地试图让评论条件工作,我没有运气,有人可以解释我做错了什么吗?

这是我的代码:

        <!--[if IE 10]>
            IE IS VERSION 10<br />
        <![endif]-->
        <!--[if !IE]><!-->
            Browser is not IE
        <!--<![endif]-->
        <!--[if lt IE 9]>
            IE IS LESS THAN VERSION 9<br />
        <![endif]-->
Run Code Online (Sandbox Code Playgroud)

发生的事情是令人沮丧的不一致.当我在IE8中加载带有上述代码的页面时,它会收到消息"IE不仅仅是版本9"这么好吗?不,因为当我在IE10中加载SAME PAGE时,我收到消息 "浏览器不是IE"

为什么它认为IE10不是IE浏览器?!我一直在页面爬行,但我的代码似乎没有任何问题.

Max*_*mus 22

我很惊讶没有人添加css解决方案.如果你只想使用css,那么使用如下语句:

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {  
   /* Put your IE-only styles here. Works for IS 10 & IE 11*/
}
Run Code Online (Sandbox Code Playgroud)

这样您就不必依赖jquery或任何html标记.只需将它发布在CSS中即可.

现在,这是一个黑客?有可能.这取决于使用微软高对比度标签,但由于没有其他浏览器使用ms标签,那么你应该好好去.

最后,查看这些页面以获取更多信息:

博客文章

对比标签上的MS Site

  • 谢谢Maximus,真棒技巧.........................我恨你IE (4认同)

Zah*_*med 21

CSS解决方案:

如果您只想在浏览器上应用CSS,那么您可以尝试:

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {  
   /* Put your IE-only styles here. Works for IS 10 & IE 11*/
}
Run Code Online (Sandbox Code Playgroud)

JavaScript解决方案:

IE 10不支持条件语句.

Internet Explorer 10中的条件语句.它会将条件注释视为常规HTML注释,并完全忽略.

使用功能检测库(如Modernizr)而不是浏览器检测.

在这篇评论中找到了关于incredwebs的解决方案:

这是演示测试

解决方案是:

if (Function('/*@cc_on return document.documentMode===10@*/')()) {
    alert('IE 10');
} else {
    alert('Not IE 10');
}
Run Code Online (Sandbox Code Playgroud)

  • 不需要有条件的评论;
  • 即使评论剥离压缩/处理也能正常工作;
  • Internet Explorer 11中没有添加ie10类;
  • 在Internet Explorer 10兼容模式下运行的Internet Explorer 11更有可能按预期工作;
  • 不需要独立的脚本标记(可以添加到头部的其他JavaScript代码中).
  • 不需要jQuery来测试