即使模拟Internet Explorer 8文档模式,为什么Internet Explorer 11不符合条件注释?

我正在使用新的Internet Explorer 11开发人员工具将文档模式切换为“8”,但条件注释仍然被忽略,也就是说,它们没有正确parsing并且行为与正常注释类似。 因此,条件注释内的任何引用文件都不会被浏览器请求/加载。

为什么会发生? 这是一个错误?

如果您认为这确实是一个需要修复的错误,请进入,并说您也可以在针对此问题报告的Microsoft错误报告中重现此问题:
通过F12 Developer Tools模拟文档模式时,条件注释不起作用

更新:此问题已被报告在上述错误报告中修复。

根据 Jacob Rossi [MSFT]

这个应该在上周发布的 IE11 Update 1中得到修复。

这是张贴于2014年4月22日。

在自己运行一些testing,它似乎确实已经修复,并且所有的testing再次顺利,用于testing有史以来最惊人的浏览器… Internet Explorer!

我只是试图在Windows 7上的Internet Explorer 11中使用它,以确保为Internet Explorer 8及以下版本(通过条件注释)创build了我使用过的HTML5语义元素,浏览器完全忽略它们。 -_-

这个function在Internet Explorer 10中运行得非常好,而且微软只需要修补它,不是吗?

 <!--[if lte IE 8]><script src="ie8-html5.js"></script><![endif]--> 

除此之外,我实际上喜欢Internet Explorer,这使得改变。

这工作对我来说,似乎是最优雅/简单的修补程序( Internet Explorer 10和Internet Explorer 11,我猜是唯一支持-ms-high-contract浏览器):

 @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { /* IE10+ specific styles go here */ } 

我最近遇到了同样的问题。 我还发现一些有条件的评论工作:

  • gtlt工作正常
  • gtelte从来没有工作过

所以一个可能的解决scheme是将条件语句改为使用gtlt运算符。

另一个我觉得更有用的方法是使用浏览器这样的服务。

我有另一个解决scheme。

启用Internet Explorer 8兼容模式的Internet Explorer 11包含string“MSIE 8.0”,因此:

(PHP示例)

 if (strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 8.0') !== false) { $head[] = sprintf('<link rel="stylesheet" href="ie8.css" />'); } 

我遇到了同样的问题 – 整个上午都让我疯狂。 我添加了Modernizr ,并select了所有选项,包括yepnope.js。

所以现在我的testing看起来像这样:

 Modernizr.load({ test: Modernizr.canvas, nope: ['Content/Site-ie-8.min.css', 'Content/font-awesome-ie7.min.css'] }); 

在这种情况下,我testingcanvas(这是不支持Internet Explorer 9之前),所以我加载我的条件内容。 这在Internet Explorer 11开发人员工具中切换浏览器模式时可以使用。

我没有看到它在这里提到,但在这个错误报告注意到,如果您更改兼容性视图设置,条件注释按预期工作。 所以:

  1. 在IE11中,点击“工具”
  2. 兼容性视图设置
  3. inputurl并点击添加

似乎现在在我的本地主机上正常工作。 我没有广泛的testing,但也许会帮助别人。

有些条件注释正在工作,如“ gt ”和“ lt ”,但是例如<!--[if IE 8]>不起作用。 对于那些想要尝试在不同版本的Internet Explorer浏览器中查看他们的网页的开发者来说,这肯定是不方便的,但这并不是什么坏消息。

尽pipe条件注释不起作用,但您仍然可以通过逐个添加样式表来testing您的网页在每个Internet Explorer版本中的外观:假设您已经为Firefox,Chrome,Internet Explorer 10和Internet Explorer 11名为“ screen.css ”,另一个样式表仅适用于Internet Explorer 9,名为“ screen-ie9.css ”,另一个仅适用于名为“ screen-ie8.css ”的Internet Explorer 8。

要仅为Internet Explorer 9testing您的网页,您可以这样做:

 <link rel="stylesheet" href="path/css/screen.css" type="text/css" /> <link rel="stylesheet" href="path/css/screen-ie9.css" type="text/css" /> 

在F12开发人员工具Emulation部分中,将“文档模式”设置为“9”,将“用户代理string”设置为“Internet Explorer 9”。 文档模式是Internet Explorer 9使用的标准,用户代理string是浏览器本身。

PS:我假设' screen.css '是你的基本样式表,这就是我首先调用它的原因,而不是稍后通过调用' screen-ie9.css '覆盖IE 9修补程序。

通过这样做,您可以“确定”(我必须使用虚拟机进行testing,以便在不带引号的情况下编写“确定”一词),以便在Internet Explorer 9浏览器上查看您的网页。 当您在Internet Explorer 9上完成testing和样式testing并且想要使用Internet Explorer 8进行testing时,您可以轻松地通过replace此项来执行相同的技巧:

 <link rel="stylesheet" href="path/css/screen-ie9.css" type="text/css" /> 

有了这个:

 <link rel="stylesheet" href="path/css/screen-ie8.css" type="text/css" /> 

所以,这只是微软对微软不方便的一个问题,但是新的F12开发者的工具提供了许多令人惊叹的function,这使得这不是什么大不了的事情。