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

时间:2014-10-20 13:42:57

标签: html internet-explorer

我在我的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浏览器上插入一个标题,在所有其他浏览器上插入一个标题。因此欢迎该问题的替代解决方案

1 个答案:

答案 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