我有一个脚本我想在每个浏览器中运行,除了 9 以下的 IE 版本,显然,这个条件语句适用于 IE:
<!--[if gt IE 8]>
JavaScript stuff here
<![endif]-->
但是该代码不会在除 IE9 之外的任何其他浏览器中执行。
有没有办法一起使用多个条件语句,例如
<!--[if gt IE 8 OR !IE]>
JavaScript stuff here
<![endif]-->
我有一个脚本我想在每个浏览器中运行,除了 9 以下的 IE 版本,显然,这个条件语句适用于 IE:
<!--[if gt IE 8]>
JavaScript stuff here
<![endif]-->
但是该代码不会在除 IE9 之外的任何其他浏览器中执行。
有没有办法一起使用多个条件语句,例如
<!--[if gt IE 8 OR !IE]>
JavaScript stuff here
<![endif]-->
您使用这样的条件注释:
<!--[if gte IE 9]><!-->
<script></script>
<!--<![endif]-->
有两种类型的条件注释:一种是从所有浏览器中注释掉整个块(上面的第一个版本),另一种是只注释掉“条件”(这里是这个版本)。
因此,所有非 IE 浏览器都可以看到<script></script>
评论之外的内容,v9 之前的 IE 会解析评论并知道忽略该 HTML。
您最好使用特征检测而不是条件注释。例如,根据此处找到的 Microsoft 文档, Internet Explorer 10 将完全忽略脚本中的任何条件注释,例如:
<!--[if IE]>
This content is ignored in IE10.
<![endif]-->
您可以通过添加以下内容来修补它:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9">
但这不是一个长期的解决方案。
您可以使用逻辑运算符来“加入”条件语句,如此处所解释的[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 浏览器,并且必须作为一个来引用(希望没有更重要的怪癖需要首先使用条件语句进行寻址)
我认为这个页面应该可以帮助你:
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>