11

我使用下面的IE条件注释:IE条件注释和Chrome/Firefox的

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

这个伟大的工程,从任何IE渲染低于8
但是保持代码,这也保持了代码在Chrome和Firefox中呈现。

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

回答

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在呈现-->之前的代码。其他浏览器仍将其视为评论的一部分。

+0

我确实希望代码能够显示IE 8和IE 9之前没有IE的版本。我也希望代码在Chrome和Firefox中显示。 – Baxter 2012-04-15 05:34:40

+1

只要你关闭评论,我想它应该适用于任何情况。 – zebasz 2012-04-15 05:42:03

+1

我测试过了,不太合适。我发现一个解决方法,所以我会编辑并添加它。 – zebasz 2012-04-15 05:48:54