繁体   English   中英

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

[英]Why are IE Conditional comments rendered differently when page openned with file:

我在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 

在同一浏览器的另一个选项卡中指向应用服务器:

conditional 

IE sees this.

after conditional 

我的目标是在IE 8浏览器上插入一个标头,在所有其他浏览器上插入一个标头。 因此,欢迎该问题的替代解决方案

从IE10开始, 不再支持条件注释,因此不应使用。

为了获得最佳结果,页面的第一行应为<!DOCTYPE html> ; 这将允许较旧版本的IE使用以前称为“标准模式”的内容,并启用该特定版本IE可用的任何标准支持

通常,使用功能检测而不是浏览器检测可以更好地完成此类任务。 条件注释是旧版IE支持的专有功能; 当不再支持依赖专有功能的代码时,该功能往往会在没有警告的情况下中断。

如果没有更清晰地了解要解决的基本问题,就很难知道该如何建议,但是鉴于某些情况仅适用于IE,而该情况没有一种更简单,更优雅的解决方案,因此这是一种解决方法检测不依赖专有功能的IE8:

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

与条件注释(不支持条件注释会失败)不同,此代码将返回一个值,即使documentMode属性不可用或在将来的IE版本中被删除。

希望这可以帮助...

-兰斯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM