首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么IE条件注释在使用文件打开页面时呈现不同:

为什么IE条件注释在使用文件打开页面时呈现不同:
EN

Stack Overflow用户
提问于 2014-10-20 13:42:57
回答 1查看 24关注 0票数 0

我在html文件中写了一些条件注释,并用file://path/test.html.打开了它。看上去很好。我启动了我的应用服务器,并将我的IE8浏览器指向http://myserver.com/ap/test.html。结果不同。有人能解释一下为什么会发生这种情况吗?对此可以做些什么?

来源

代码语言:javascript
代码运行次数:0
运行
复制
<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一起打开文件:

代码语言:javascript
代码运行次数:0
运行
复制
conditional 

Only IE 8 will see this

Only gt IE 7 will see this

IE sees this.

after conditional 

在另一个选项卡中,同一个浏览器指向app服务器:

代码语言:javascript
代码运行次数:0
运行
复制
conditional 

IE sees this.

after conditional 

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-21 17:13:51

在IE10中,条件注释是不再支持,不应该使用。

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

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

如果无法更清楚地了解您试图解决的潜在问题,就很难知道该提供什么建议,但考虑到某些绝对只适用于IE的场景(没有更简单、更优雅的解决方案),这里有一种方法可以检测不依赖专有特性的IE8:

代码语言:javascript
代码运行次数:0
运行
复制
var isIE8 = window.document.documentMode == 8;

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

希望这能帮上忙。

-兰斯

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26467135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档