11

我正在使用以下 IE 条件注释:

<!--[if gt IE 7]>
Here is some code.
<![endif]-->

这可以很好地防止代码在任何低于 8 的 IE 中呈现。
但是,这也可以防止代码在 Chrome 和 Firefox 中呈现。

关于为什么会发生这种情况以及如何让代码在 IE 以外的浏览器中呈现的任何想法?

4

1 回答 1

42

条件注释是 Microsoft IE 特定的规则,它们不是任何标准的一部分。如果您检查条件注释的结构:

<!--[if gt IE 7]>
Here is some code.
<![endif]-->

正如它的名字所暗示的,这只是一个大评论<!-- comment -->。IE 会检查注释中是否存在诸如此类的条件,这些条件同样不符合 HTML 标准。

要创建不在 IE 中呈现但在其他浏览器中呈现的代码,请使用以下条件:

<!--[if !IE]> -->
This will be rendered by anything but IE.
<!-- <![endif]-->

看看条件是如何包含在封闭的评论中的?这就是为什么它在普通浏览器中呈现,而 IE 检查条件,并决定省略所有内容,直到endif.

编辑

如果您想添加另一个条件,并继续在非 IE 浏览器上呈现代码,您可以使用以下解决方法:

<!--[if gt IE 7]> <!-- -->
Here is some code for anything but IE 7 and below.
<!-- <![endif]-->

注意我不得不再次使用打开注释来防止 IE-->在代码之前呈现。其他浏览器仍会将其视为评论的一部分。

于 2012-04-15T05:28:18.430 回答