我在html文件中写了一些条件注释,并用file://path/test.html.打开了它。看上去很好。我启动了我的应用服务器,并将我的IE8浏览器指向http://myserver.com/ap/test.html。结果不同。有人能解释一下为什么会发生这种情况吗?对此可以做些什么?
来源
<html>
<body>
conditional
<p>
<!--[if IE 8 ]>
<p>Only IE 8 will see this</p>
<![endif]-->
<!--[if gt IE 7 ]>
<p>Only gt IE 7 will see this</p>
<![endif]-->
<!--[if IE]>
<p>IE sees this.</p>
<![endif]-->
<!--[if ! IE]>-->
<p>not IE</p>
<!--<![endif]-->
<!--[if (gt IE 8)|(!IE)]><!-->
<p>Every one except IE 8 will see this (gt IE 8)|(!IE)</p>
<!--<![endif]-->
<p>after conditional
</body>
</html>
与IE 8一起打开文件:
conditional
Only IE 8 will see this
Only gt IE 7 will see this
IE sees this.
after conditional
在另一个选项卡中,同一个浏览器指向app服务器:
conditional
IE sees this.
after conditional
我的目标是在IE8浏览器上插入一个头,在所有其他浏览器上插入一个不同的头。因此,该问题的替代解决方案将受到欢迎。
发布于 2014-10-21 09:13:51
在IE10中,条件注释是不再支持,不应该使用。
为了获得最好的结果,页面中的第一行应该是<!DOCTYPE html>
;这将允许旧版本的IE使用过去称为“标准模式”的内容,并启用任何针对该特定版本的IE可用的标准支持。
一般来说,这样的任务更好地使用特征检测来完成,而不是使用浏览器检测。条件注释是IE的旧版本支持的专有特性;依赖专有特性的代码在不再支持所述功能时往往会在没有警告的情况下中断。
如果无法更清楚地了解您试图解决的潜在问题,就很难知道该提供什么建议,但考虑到某些绝对只适用于IE的场景(没有更简单、更优雅的解决方案),这里有一种方法可以检测不依赖专有特性的IE8:
var isIE8 = window.document.documentMode == 8;
与条件注释(当它们不受支持时失败)不同,这段代码将返回一个值,即使documentMode属性不可用或在未来的IE版本中被删除。
希望这能帮上忙。
-兰斯
https://stackoverflow.com/questions/26467135
复制相似问题