文档中的多个条件语句

时间:2012-08-14 08:55:20

标签: javascript html css conditional-comments

我有一个脚本我想在每个浏览器中运行,除了9以下的IE版本,显然,这个条件语句适用于IE:

<!--[if gt IE 8]>
    JavaScript stuff here
<![endif]-->

但是,除了IE9之外,该代码不会在任何其他浏览器中执行。

是否有任何方法可以同时使用多个条件语句,例如

<!--[if gt IE 8 OR !IE]>
    JavaScript stuff here
<![endif]-->

4 个答案:

答案 0 :(得分:4)

你使用这样的条件评论:

<!--[if gte IE 9]><!-->
    <script></script>
<!--<![endif]-->

有两种类型的条件注释:从所有浏览器(上面的第一个版本)中注释整个块的注释和仅注释掉“条件”的注释(此处此版本)。

因此,所有非IE浏览器都会在评论之外看到<script></script>,在v9解析评论之前IE就知道忽略该HTML。

答案 1 :(得分:2)

最好使用功能检测而不是条件注释。例如,根据Microsoft文档here,Internet Explorer 10将完全忽略脚本中的任何条件注释,例如:

  <!--[if IE]>
    This content is ignored in IE10.
  <![endif]-->

您可以通过添加:

来修补此问题
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9">

但这不是一个长期解决方案。

答案 2 :(得分:2)

您可以使用逻辑运算符“加入”[if (gt IE 5)&(lt IE 7)][if (IE 6)|(IE 7)]等条件语句,如解释here

使用条件语句来评论内容看起来令人困惑,我想知道为什么这么多答案都表明了这一点。这是我熟悉的符号more examples on quirksmode

<!--[if IE]>
According to the conditional comment this is IE<br />
<![endif]-->
<!--[if !IE]> -->
According to the conditional comment this is not IE<br />
<!-- <![endif]-->

此语法已被推荐in MS specs,具有更多功能,例如自定义版本矢量检测。请记住,尽管对于所有意图和目的,IE10将被检测为非IE浏览器并且必须被引用为一个(希望没有更重要的怪癖要求首先使用条件语句进行寻址)

答案 3 :(得分:0)

我认为此页面可以帮助您:

http://www.cssplay.co.uk/menu/conditional.html

具体做法是:

I have found that the following code will allow you to target non-IE browsers

<!--[if !IE]><!-->
<h1>You are NOT using Internet Explorer</h1>
<!--<![endif]-->

..and finally to target non-IE and a specific IE browser
(or any combinations using lte lt or gt gte).

<!--[if IE 6]><!-->
<h1>You are using EITHER Internet Explorer version 6<br />
OR a non-IE browser</h1>
<!--<![endif]-->
<h1>You are using
<!--[if IE 6]>IE6 and not <!-->
a non-IE browser
<!--<![endif]--></h1>