Html 当使用文件打开页面时,为什么IE条件注释呈现方式不同:

Html 当使用文件打开页面时,为什么IE条件注释呈现方式不同:,html,internet-explorer,Html,Internet Explorer,我在html文件中写了一些条件注释,并用file://path/test.html. 看起来不错。我启动了我的应用服务器,并将我的IE 8浏览器指向。结果不同。有人能解释为什么会发生这种情况,以及可能采取的措施吗 源头 <html> <body> conditional <p> <!--[if IE 8 ]> <p>Only IE 8 will see this</p> <![endif]-->

我在html文件中写了一些条件注释,并用file://path/test.html. 看起来不错。我启动了我的应用服务器,并将我的IE 8浏览器指向。结果不同。有人能解释为什么会发生这种情况,以及可能采取的措施吗

源头

<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>
在指向app server的另一个选项卡中使用相同的浏览器:

conditional 

IE sees this.

after conditional 

我的目标是在IE8浏览器上插入一个标题,在所有其他浏览器上插入一个不同的标题。因此,对于该问题的替代解决方案将是受欢迎的

从IE10开始,有条件的评论是并且不应该使用

为了获得最佳效果,页面的第一行应该是;这将允许旧版本的IE使用以前称为标准模式的模式,并启用该特定版本IE可用的任何功能

一般来说,这样的任务可以通过浏览器检测而不是浏览器检测来更好地完成。条件注释是旧版本IE支持的专有功能;当所述特性不再受支持时,依赖于专有特性的代码往往会在没有警告的情况下中断

如果对您试图解决的潜在问题没有更清晰的概念,很难知道建议什么,但是考虑到某些场景完全只适用于IE,没有更简单、更优雅的解决方案,这里有一种方法可以检测不依赖专有功能的IE8:

var isIE8 = window.document.documentMode == 8;
与不支持条件注释时失败的条件注释不同,此代码将返回一个值,即使documentMode属性不可用或在将来的IE版本中被删除

希望这有助于

-长矛

var isIE8 = window.document.documentMode == 8;