6

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

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

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

有没有办法一起使用多个条件语句,例如

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

4 回答 4

4

您使用这样的条件注释:

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

有两种类型的条件注释:一种是从所有浏览器中注释掉整个块(上面的第一个版本),另一种是只注释掉“条件”(这里是这个版本)。

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

于 2012-08-14T09:16:59.313 回答
2

您最好使用特征检测而不是条件注释。例如,根据此处找到的 Microsoft 文档, Internet Explorer 10 将完全忽略脚本中的任何条件注释,例如:

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

您可以通过添加以下内容来修补它:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9">

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

于 2012-08-14T09:27:42.663 回答
2

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

使用条件语句来注释内容看起来令人困惑,我想知道为什么有这么多答案建议这样做。这是我熟悉的符号,还有更多关于 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]-->

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

于 2012-08-14T10:00:26.220 回答
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>
于 2012-08-14T09:11:59.507 回答