25

我一直在让自己发疯,试图让评论条件起作用,但我没有运气,有人可以解释我做错了什么吗?

这是我的代码:

        <!--[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浏览器?!我一直在逐页爬行,但从我发现的代码来看,我的代码似乎没有任何问题。

4

5 回答 5

23

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 不支持条件语句。

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

使用诸如Modernizr之类的特征检测库来代替浏览器检测。

在此评论中找到了关于令人印象深刻的网络的解决方案:

这是要测试的演示

解决方案是:

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

  • 不需要条件注释;
  • 即使评论剥离压缩/处理也有效;
  • Internet Explorer 11 中没有添加 ie10 类;
  • 在 Internet Explorer 10 兼容模式下运行的 Internet Explorer 11 更有可能按预期工作;
  • 不需要独立的脚本标签(可以添加到头部的其他 JavaScript 代码中)。
  • 不需要 jQuery 来测试
于 2013-10-21T18:35:28.247 回答
23

我很惊讶没有人添加纯 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 中,您就可以开始使用了。

现在,它是一个黑客吗?可能。这取决于使用 microsoft 高对比度标签,但由于没有其他浏览器使用 ms 标签,所以你应该很高兴。

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

博客文章

对比标签上的 MS 站点

于 2016-12-15T16:49:27.343 回答
3

IE 10、11及更高版本不再支持条件注释。

看到这个答案:https ://stackoverflow.com/a/22187600/1498739

于 2016-03-04T11:34:57.030 回答
2

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

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

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

于 2014-10-31T02:22:00.047 回答
0

IE 10 删除了条件注释。

您可以在 javascript 中执行类似的操作,如下所示:

if ($.browser.msie && $.browser.version === 10) {
    // stuff here (like adding an IE10 class to the body or html tag
}
于 2013-10-21T18:33:07.440 回答