110

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

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

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

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

4

8 回答 8

29

根据_Jacob Rossi [MSFT]

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

发布于 2014 年 4 月 22 日。

在我自己运行的一些测试中,这似乎是固定的,并且一切都再次顺利运行,以测试有史以来最令人惊叹的浏览器......Internet Explorer!

于 2014-06-27T01:51:57.923 回答
20

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

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

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

除此之外,我实际上很喜欢 Internet Explorer,它带来了改变。

于 2013-11-13T08:33:33.723 回答
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 */
}
于 2014-09-25T11:19:35.847 回答
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" />');
}
于 2013-11-14T09:19:41.977 回答
8

我最近遇到了同样的问题。我还发现一些条件注释有效:

  • gt并且lt工作正常
  • gtelte从未工作过

因此,一种可能的解决方案是将条件语句更改为使用gtandlt运算符。

我发现更有用的另一种选择是使用类似browserstack的服务。

于 2013-11-26T03:34:43.690 回答
4

我有同样的问题 - 它让我整个早上都发疯了。我添加了Modernizr,并选择了所有选项,包括 yepnope.js。

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

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

在这种情况下,我测试画布(在 Internet Explorer 9 之前不支持),因此我加载了我的条件内容。现在,这在 Internet Explorer 11 开发人员工具中切换浏览器模式时有效。

于 2013-11-04T16:47:22.480 回答
3

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

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

现在似乎在我的本地主机上工作正常。我没有对此进行过广泛的测试,但也许它会对某人有所帮助。

于 2014-06-06T01:14:25.717 回答
1

一些条件注释可以正常工作,例如 ' gt' 和 ' lt',但例如 <!--[if IE 8]>不工作。对于想要尝试他们的网页在不同版本的 Internet Explorer 浏览器上的外观的开发人员来说,这无疑是不方便的,但这并不全是坏消息。

尽管条件注释不起作用,但您仍然可以通过一次添加一个样式表来测试您的网页在每个 Internet Explorer 版本中的外观:假设您有一个适用于 Firefox、Chrome、Internet Explorer 10 和 Internet Explorer 的样式表11 称为 ' screen.css',另一个仅适用于 Internet Explorer 9 的样式表称为 ' screen-ie9.css',另一个仅适用于 Internet Explorer 8 的样式表称为 ' screen-ie8.css'。

要仅为 Internet Explorer 9 测试您的网页,您可以执行以下操作:

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

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

PS:我假设 ' screen.css' 是您的基本样式表,这就是我首先调用它的原因,而不是稍后通过调用 ' screen-ie9.css' 第二个来“覆盖”Internet Explorer 9 修复。

通过这样做,您可以“确定”(我必须使用虚拟机进行测试才能写出不带引号的“确定”一词)您正在 Internet Explorer 9 浏览器上查看您的网页。当您在 Internet Explorer 9 上完成测试和样式设置后,您想使用 Internet Explorer 8 进行测试,您可以通过替换以下代码轻松地完成相同的技巧:

<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 开发人员工具提供了许多令人惊叹的功能,这使得这没什么大不了的。

于 2013-12-05T11:38:35.103 回答