为什么Internet Explorer 11即使在模拟Internet Explorer 8文档模式时也不尊重条件注释?

tha*_*smo 111 browser internet-explorer conditional-comments internet-explorer-11 ie11-developer-tools

我正在使用新的Internet Explorer 11开发人员工具将文档模式切换为"8",但条件注释仍然被忽略,即它们未被正确解析并且表现得像普通注释.因此,浏览器不会请求/加载条件注释中的任何引用文件.

为什么会这样?这是一个错误吗?

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

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

L84*_*L84 28

根据Jacob Rossi [MSFT]

这应该在上周发布的 IE11更新1中修复.

那张贴于2014年4月22日.

在自己运行一些测试时,看起来确实已经修复了,而且所有测试都运行得很顺利,以便测试有史以来最令人惊叹的浏览器...... Internet Explorer!

  • 这需要更多投资.我不得不深入挖掘两个堆栈溢出答案才到达. (4认同)
  • 你必须是saracastic. (3认同)

Dyl*_*cho 20

我刚尝试在Windows 7上的Internet Explorer 11中使用它来确保我为Internet Explorer 8及更低版本(通过条件注释)创建了我使用过的HTML5语义元素,浏览器只是忽略它们.-_-

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

<!--[if lte IE 8]><script src="ie8-html5.js"></script><![endif]-->
Run Code Online (Sandbox Code Playgroud)

除此之外,我实际上正在享受Internet Explorer,这是一个改变.

  • Internet Explorer浏览器非常糟糕.版本之间没有一致性.到底是谁发展了这个?即使是我的大妈也能做得更好! (9认同)
  • 是的,IE 11是一个更好的体验,所有的动画实际上都有效:).是的,当用户开始习惯时,MS有一些"修修补补"的历史.一些人会说,看看他们对Windows XP做了什么......"修复什么没有破坏".无论如何,这很糟糕 (4认同)
  • 编辑:他们正在修复此(或尝试)自2014年1月22日以来https://connect.microsoft.com/IE/feedback/details/806767/conditional-comments-do-not-work-when-emulating-document-modes-通过-F12开发者工具 (4认同)

cma*_*tin 17

这对我有用,似乎是最优雅/最简单的修复(Internet Explorer 10Internet Explorer 11我认为是唯一支持的浏览器-ms-high-contract):

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


And*_*nov 8

我有另一个解决方案.

打开Internet Explorer 8兼容模式的Internet Explorer 11包含字符串'MSIE 8.0',因此:

(PHP示例)

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

  • 我测试了文档模式,似乎没有更改用户代理?! (2认同)
  • 这个解决方案是最好的.我已经将它转换为ASP.NET MVC Razor并且它完美运行:@ {if(Request.UserAgent.Contains("MSIE 8.0")){/*这里的元标记*/}} (2认同)

use*_*980 8

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

  • gt并且lt工作得很好
  • gtelte从未工作

因此,一种可能的解决方案是更改条件语句以使用gtlt运算符.

我觉得更有用的另一种选择是使用像browserstack这样的服务.