0

IE 10+不支持条件语句。这使IE 7-11的开发变得棘手,因为IE10-11解析条件语句中的内容而不是忽略它。例如:将IE条件语句替换为IE 10+

<!--[if (IE 9) | (IE 8)]><!--> 
    // Code here will get rendered by IE10 & IE11 
<!--<![endif]--> 

所以,如果我想有一些代码,将只得到呈现在IE 8 & 9,然后是一些代码,将在IE10得到渲染,只有IE11 &火狐,我该怎么办它?

编辑:请注意,我不是在说这里的风格;我想在我的网页上支持重大的结构变化。例如:

<!--[if (IE 9) | (IE 8)]><!--> 
    <div> 
     <div> 
     Test 
     </div> 
    </div> 
<!--<![endif]--> 

<!--[if (IE 10]><!--> 
    <div> 
     <h3>Test</h3> 
    </div> 
<!--<![endif]--> 
+0

我有点困惑。如果你想要一些代码由IE10 +和其他浏览器执行,是不是你有答案? – BoltClock

+0

不,因为我只想在IE8 + 9中执行一个代码块,并且IE10 + 11会忽略该代码块。而另一个只针对IE10 + 11,被IE8 + 9忽略。 –

+0

现在条件注释已过时:[MSDN](http://msdn.microsoft.com/zh-cn/library/ie/hh801214%28v=vs.85%29.aspx)。但是,为什么你想要一些代码具有一些特定的IE10/IE11(而不是像FF/Chrome/...一样)? –

回答

3

我得到了这个在我的工作。它看起来像条件​​语句的格式已关闭。

<!--[if (IE 9) | (IE 8)]> 
    Code here will not get rendered by IE10 & IE11 
<![endif]--> 

此外,您正在渲染什么类型的代码,js,css?

+0

我希望IE10&11不显示在该条件中包装的代码。 –

+1

@JohnSmith请再次阅读他的答案**清楚**。你做错了什么 –

+0

@John Smith:FYI,答案已经被编辑。看起来我们都有些困惑。 – BoltClock

2

如果只想IE8/9时至一切呈现一组不同标记的其他(意为IE10 +接收相同的代码,所有其他浏览器),这是完全可行的:

  • 您需要隐藏所有其他浏览器的(IE 9) | (IE 8)条件。这意味着让注释部分封装整个代码块,而不仅仅是条件表达式。

  • 您需要允许所有其他浏览器查看其他条件,同时防止IE8/9看到该部分。

    (IE 10)部分没有问题; IE8和IE9会知道它们不满足条件,因此即使它没有被注释掉也不会呈现标记,而IE10将永远不会看到条件(无论哪种版本都不会),因此它将呈现标记,因为它不被隐藏在评论中。

因此:

<!--[if (IE 9) | (IE 8)]> 
    <div> 
     <div> 
     Test 
     </div> 
    </div> 
<![endif]--> 

<!--[if (IE 10)]><!--> 
    <div> 
     <h3>Test</h3> 
    </div> 
<!--<![endif]-->