我在我的html文件中写了一些条件注释,并用file://path/test.html打开它。看起来很好。我启动了我的应用服务器并将我的IE 8浏览器指向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
我的目标是在IE 8浏览器上插入一个标题,在所有其他浏览器上插入一个标题。因此欢迎该问题的替代解决方案
答案 0 :(得分:0)
从IE10开始,条件注释为no longer supported,不应使用。
为获得最佳效果,您网页的第一行应为<!DOCTYPE html>
;这将允许旧版本的IE使用过去称为“标准模式”的内容,并启用该特定版本的IE可用的任何standards support。
通常,使用feature detection可以更好地完成此类任务,而不是浏览器检测。条件注释是旧版IE支持的专有功能;当不再支持所述功能时,依赖于专有功能的代码往往会在没有警告的情况下中断。
如果你没有更清楚地了解你想要解决的潜在问题,很难知道该提出什么建议,但鉴于某些场景绝对只适用于IE,那个没有更简单,更优雅的解决方案,这里有一种检测不依赖于专有功能的IE8的方法:
var isIE8 = window.document.documentMode == 8;
与条件注释(当它们不受支持时失败)不同时,即使documentMode属性不可用或在IE的某个未来版本中被删除,此代码也将返回一个值。
希望这会有所帮助......
- Lance