我正在使用新的Internet Explorer 11开发人员工具将文档模式切换为“ 8”,但是条件注释仍然被忽略,也就是说,它们没有被正确地解析并且表现得像普通注释一样。因此,浏览器不会请求/加载条件注释中的任何引用文件。
为什么会这样?是虫子吗?
如果您认为这确实是一个需要修复的错误,请进入并说您也可以在针对此问题而报告的Microsoft错误报告中重现此错误:
通过F12 Developer模拟文档模式时,条件注释不起作用工具。
更新:已报告该问题在提到的错误报告中已得到解决。
我正在使用新的Internet Explorer 11开发人员工具将文档模式切换为“ 8”,但是条件注释仍然被忽略,也就是说,它们没有被正确地解析并且表现得像普通注释一样。因此,浏览器不会请求/加载条件注释中的任何引用文件。
为什么会这样?是虫子吗?
如果您认为这确实是一个需要修复的错误,请进入并说您也可以在针对此问题而报告的Microsoft错误报告中重现此错误:
通过F12 Developer模拟文档模式时,条件注释不起作用工具。
更新:已报告该问题在提到的错误报告中已得到解决。
Answers:
根据对Jacob Rossi [MSFT]
这应该在上周发布的 IE11更新1中修复。
该信息发布于2014年4月22日。
我自己进行了一些测试,似乎确实已修复,所有功能都再次正常运行,以测试有史以来最出色的浏览器... Internet Explorer!
我只是尝试在Windows 7的Internet Explorer 11中使用它,以确保为Internet Explorer 8及更低版本(通过条件注释)创建了我使用的HTML5语义元素,并且浏览器只是忽略了它们。-_-
此功能在Internet Explorer 10中可以很好地工作,而Microsoft只需要修改它,不是吗?
<!--[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 */
}
我最近遇到了同样的问题。我还发现一些条件注释有效:
gt
并且lt
工作正常gte
和lte
从未工作因此,一种可能的解决方案是更改条件语句以使用gt
和lt
运算符。
我发现更有用的另一种选择是使用诸如browserstack之类的服务。
我对此有另一种解决方案。
启用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" />');
}
我遇到了同样的问题-整个早晨我都疯了。我添加了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
”是您的基本样式表,这是我首先调用它的原因,而不是“覆盖” Internet Explorer 9之后通过先调用“ screen-ie9.css
” 修复的问题。
这样,您可以“确定”(我必须对VM进行测试才能写出“ sure”一词而不加引号),您正在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开发人员的工具提供了许多令人惊叹的功能,这并没什么大不了的。