如何在IE HTML条件中设置“ else”?


Answers:


115

您不是在寻找其他东西,而是在寻找<![if !IE]> <something or other> <!--[endif]>(请注意,这不是评论)。

<!--[if IE]>
   You're using IE!
<![endif]-->
<![if !IE]>
   You're using something else!
<![endif]>

您可以在此处找到有关条件注释的文档。


1
我可以使用它来包含javascript文件吗?换句话说,如果浏览器是IE,则包含ie.js,否则包含“ all_other_browsers.js”
TIMEX

4
只需注意,要否定ie版本,条件必须在括号中,例如<![if !(IE 7)]>
Flak DiNenno

2
不幸的是,HTML条件注释并不在IE 10的支持,因此检查if IE不会在IE 10的工作......见下文KhanSharp的回答为一体的现代化解决方案。
伊恩·坎贝尔

1
为更高的IE版本+所有其他浏览器执行其他操作。您需要特殊的语法<!--[if gt IE 8]> <!-- --> Here is some code for anything but IE 8 and below. <!-- <![endif]-->。请参阅:stackoverflow.com/a/10159787/903186
Ruut 2015年

1
@IanCampbell幸运的是,IE10不需要像以前的版本一样接近匀速水平,因此这可以看作是一个好处(IE10将运行与ES5 +兼容的JS)
cchamberlain 2015年

43

我使用以下内容在IE9或更高版本以及所有其他浏览器中加载资源

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

很难相信。如果语句节在注释内(因此,它对其他浏览器不可见)但对于IE可见,请查看开头和结尾。


1
+1很棒,这实际上也适用于IE 10!检查<!--[if lte IE 8]> ... ... <![endif]--> 应涵盖使用CSS媒体查询时,在所有条件下进行检查。
伊恩·坎贝尔

还要注意的是没有<!紧随开幕if语句,“ - >”将在页面上IE 9的出现,所以你想包括。
伊恩·坎贝尔2013年

此语法<!--[if IE]>在IE7兼容模式下不起作用。如果您不幸无法支持IE6,请使用此答案中的语法使其起作用:-|
Itay 2015年

太糟糕的Babel / webpack将此视为SyntaxError
Vadorequest'Mar 31''18

12

您问题的解决方案是(注意使用<!-- -->):

<!--[if lt IE 9]>
  This is less then IE9
<![endif]-->
<!--[if gt IE 8]> <!-- -->
  this is all browsers: IE9 or higher, firefox, chrome, etc.
<!-- <![endif]-->

我知道这不完全是OP所要求的,但这恰恰是我一直在寻找的解决方案。不幸的是,我必须将第二个更改为[if gt IE 7]。如果仅Microsoft对浏览器更新的坚持与对OS更新的坚持一样,我们的工作将容易得多。
Fi Horan

8

条件注释可以在脚本以及html-

/*@cc_on
@if(@_jscript_version> 5.5){
    navigator.IEmod= document.documentMode? document.documentMode:
    window.XMLHttpRequest? 7: 6;

}
@else{
    alert('your '+navigator.appName+' is older than dirt.');
}
@end
@*/

3

您不需要做一个else这是隐含的。所以

// put your other stylesheets here

<!--[if lt IE 9]>
    //put your stylesheet here for less than ie9
<![endif]-->

1
@太平洋标准时间。也许需要更好地使用单词。大概您的IE目标样式是在常规样式表中以其他方式处理的,因此它可以以一种或另一种方式工作。
詹森·詹纳罗

由于CSS中的“ C”表示“级联”,因此非IE样式表是否一定要IE条件语句之前?否则,后一个将优先于前一个以及它们具有的所有IE特定选择器和规则。
RobG 2011年

设置了IE条件,以便IE可以拥有自己的指令。所有其他浏览器仅将其视为纯HTML注释。
John Stimac

注意@RobG。谢谢。在我发布但想到之前想到了这一点–编辑
Jason Gennaro

@Jason Gennaro编辑好得多(在许多情况下,反转顺序也很重要。)

2

@cwallenpoole接受的答案将破坏标记,使HTML无效,并破坏Visual Studio的语法突出显示。

保持清洁的方法如下:

<!--[if IE]>
    You're using IE!
<![endif]-->
<!--[if !IE]><!-->
    You're not using IE. See, even SO highlights this correctly.
<!--<![endif]-->

0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html dir="ltr" lang="en-US" xmlns="http://www.w3.org/1999/xhtml">

<head>
 <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9">
</head>
 <!--[if IE]>
<body style="margin: 38px 0 0 0;">
 <![endif]-->
 <!--[if !IE]>
<body>
 <![endif]-->

  -Content-

 </body>
</html>

经过数小时的搜索,这对我有用。我需要腾出空间来放置弹出式横幅,IE不想对其进行动画处理。它应该在几秒钟后隐藏起来。使用此功能,我可以将整个页面向下移动得足够多,但是只能在IE中,这正是我所需要的!

目前仅适用于仍在使用IE的用户,我更喜欢FireFox或Chrome浏览器。

感谢您按此特定顺序输入这些字母/符号!


这并不能真正回答原始问题。尽管此信息可能对某人有所帮助,但与该问题相关联时不太可能找到它。
Guenther
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.