如果IE条件不起作用

时间:2013-10-21 18:30:24

标签: html internet-explorer comments conditional

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

这是我的代码:

        <!--[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]-->

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

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

5 个答案:

答案 0 :(得分: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*/
}

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

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

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

Blog Post

MS Site on the contrast tag

答案 1 :(得分:19)

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*/
}

JavaScript解决方案:

IE 10不支持条件语句。

Conditional statements in Internet Explorer 10.。它会将条件注释视为常规HTML注释,并完全忽略。

使用Modernizr等功能检测库代替浏览器检测。

在此impressivewebs中找到comment的解决方案:

Here is Demo to test

解决方案是:

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

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

答案 2 :(得分:2)

IE 10删除了有条件的评论。

您可以在javascript中执行类似的操作:

if ($.browser.msie && $.browser.version === 10) {
    // stuff here (like adding an IE10 class to the body or html tag
}

答案 3 :(得分:2)

IE 10,11 及向上 不再支持条件评论。

请参阅此答案:https://stackoverflow.com/a/22187600/1498739

答案 4 :(得分:1)

尝试在页面顶部附近添加以下元标记,以选择加入Internet Explorer 9行为:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9">

这是因为在Internet Explorer 10标准和怪癖模式中删除了条件注释,以提高互操作性并符合HTML5。这意味着条件注释现在被视为常规注释,就像在其他浏览器中一样。此更改可能会影响专门为Windows Internet Explorer编写的页面或使用浏览器嗅探来改变其在Internet Explorer中的行为的页面。