我正在使用新的Internet Explorer 11开发人员工具将文档模式切换为“8”,但条件注释仍然被忽略,即它们没有被正确解析并且表现得像普通注释。因此,浏览器不会请求/加载条件注释中的任何引用文件。
为什么会这样?它是一个错误吗?
如果您认为这确实是一个需要修复的错误,请进入并说您也可以在针对此问题报告的 Microsoft 错误报告中重现此问题:
条件注释在通过 F12 Developer 模拟文档模式时不起作用工具。
更新:已报告此问题已在上述错误报告中得到修复。
我正在使用新的Internet Explorer 11开发人员工具将文档模式切换为“8”,但条件注释仍然被忽略,即它们没有被正确解析并且表现得像普通注释。因此,浏览器不会请求/加载条件注释中的任何引用文件。
为什么会这样?它是一个错误吗?
如果您认为这确实是一个需要修复的错误,请进入并说您也可以在针对此问题报告的 Microsoft 错误报告中重现此问题:
条件注释在通过 F12 Developer 模拟文档模式时不起作用工具。
更新:已报告此问题已在上述错误报告中得到修复。
我刚刚尝试在 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,它带来了改变。
这对我有用,似乎是最优雅/最简单的修复(我猜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 */
}
我对此有另一种解决方案。
打开 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" />');
}
我最近遇到了同样的问题。我还发现一些条件注释有效:
gt
并且lt
工作正常gte
lte
从未工作过因此,一种可能的解决方案是将条件语句更改为使用gt
andlt
运算符。
我发现更有用的另一种选择是使用类似browserstack的服务。
我有同样的问题 - 它让我整个早上都发疯了。我添加了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 开发人员工具中切换浏览器模式时有效。
我没有看到这里提到它,但在这个错误报告中指出,如果您更改兼容性视图设置,条件注释将按预期工作。所以:
现在似乎在我的本地主机上工作正常。我没有对此进行过广泛的测试,但也许它会对某人有所帮助。
一些条件注释可以正常工作,例如 ' 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 开发人员工具提供了许多令人惊叹的功能,这使得这没什么大不了的。