[英]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.