什么时候会使用<! - [if!IE]>? - >

时间:2011-02-11 09:04:38

标签: html internet-explorer conditional-comments

我昨晚在调试IE7中的一些事情时正在思考这个问题,当我输入<!--[if IE7]>...时,我看到<!--[if !IE]>发现了这个问题。

现在让我知道的是,据我所知,只有IE识别出这些条件评论,所以说if NOT IE没有意义,IE是否看到这个并说“Iam IE,所以这不是'适用于我?“或者人们对哪些浏览器可以识别它感到困惑?

所以我的问题是。

您在哪里使用<!--[if !IE]>以及它的目的是什么?

4 个答案:

答案 0 :(得分:17)

您可以将它与特殊的synax一起使用:

<!--[if !(IE)]><!--> <html lang="en" class="no-js"> <!--<![endif]-->

这意味着IE忽略了介于两者之间的内容,但其他浏览器将条件注释视为已关闭的注释并解释它们之间的内容。

答案 1 :(得分:2)

我想说如果你想运行一个适用于IE以外的每个浏览器的脚本,因为IE不会运行它...

答案 2 :(得分:2)

要确认您的怀疑,在HTML中添加它是没有意义的,因为大多数或所有浏览器都会忽略注释块的内容。

当想要排除特定版本时使用否定运算符会很有用,例如&lt;! - [if!(IE 6)]&gt;将在所有版本的IE中解析(从IE5开始),但不在IE6中解析。

http://msdn.microsoft.com/en-us/library/ms537512(v=vs.85).aspx

答案 3 :(得分:1)

AFAIK,其他浏览器将条件注释视为注释块(即,它们根本不被解析)。因此,这样的评论会在除了Internet Explorer之外的任何事情中发生某些事情(即包含CSS文件)(因此它与[if IE]条件注释相反)。在这些评论中添加所有CSS,并查看IE的行为:P。

[编辑]

好的,我刚刚检查过。这确实很愚蠢。由于<style>标记位于CC中,因此其他浏览器根本不对其进行解析,因此根本不会包含它。 IE确实将此解释为“啊哈,我是IE,所以我需要跳过这个”。我能想到的唯一合理的解释是微软假设其他浏览器可能会开始解析条件注释。