我有一个脚本我想在每个浏览器中运行,除了9以下的IE版本,显然,这个条件语句适用于IE:
<!--[if gt IE 8]>
JavaScript stuff here
<![endif]-->
但是,除了IE9之外,该代码不会在任何其他浏览器中执行。
是否有任何方法可以同时使用多个条件语句,例如
<!--[if gt IE 8 OR !IE]>
JavaScript stuff here
<![endif]-->
答案 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>