如何在 IE HTML 条件中创建“else”?

Posted

技术标签:

【中文标题】如何在 IE HTML 条件中创建“else”?【英文标题】:How do I make an "else" in an IE HTML conditional? 【发布时间】:2011-10-08 04:44:12 【问题描述】:
<!--[if lt IE 9]>
    This is less then IE9
ELSE
    this is all browsers: firefox, chrome, etc.
<![endif]-->

如何在我的 html 中执行此操作?我想做一个“其他”...

【问题讨论】:

没有“其他”:msdn.microsoft.com/en-us/library/ms537512(v=vs.85).aspx 【参考方案1】:
<!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。

感谢您按特定顺序提供这些字母/符号!

【讨论】:

这并不能真正回答原始问题。虽然此信息可能对某人有所帮助,但在与此问题相关联时不太可能找到。【参考方案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]-->

【讨论】:

【参考方案3】:

你的问题的解决方法是(注意使用&lt;!-- --&gt;):

<!--[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]。如果微软对浏览器更新和操作系统更新一样坚持,我们的工作会容易得多。【参考方案4】:

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

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

这很难相信。查看 if 语句部分的开头和结尾部分在 cmets 内(因此,它对其他浏览器不可见)但对 IE 可见。

【讨论】:

+1 太棒了,这实际上也适用于 IE 10!检查&lt;!--[if lte IE 8]&gt; ... ... &lt;![endif]--&gt;之前这应该涵盖使用CSS媒体查询时要检查的所有条件。 另请注意,没有紧跟在开始 if 语句之后的&lt;!,“-->”将出现在 IE 9 的页面上,因此您确实希望包含那个。 此语法&lt;!--[if IE]&gt; 在 IE7 兼容模式下不起作用。如果您不幸支持 IE6,请使用此答案中的语法使其工作:-| 太糟糕了 Babel/webpack 认为这是一个 SyntaxError【参考方案5】:

条件 cmets 可以在脚本中也可以在 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
@*/

【讨论】:

【参考方案6】:

您无需填写else暗示。所以

// put your other stylesheets here

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

【讨论】:

@pst。也许需要更好地使用单词。大概您的 IE 目标样式在您的正常样式表中以其他方式处理,因此它可以以一种或另一种方式工作。 既然 CSS 中的“C”表示“层叠”,那么非 IE 样式表肯定应该在 IE 条件语句之前 before 吗?否则,后面的将优先于前面的以及它们共有的任何 IE 特定选择器和规则。 IE 条件是为了让 IE 可以有自己的指令。所有其他浏览器只是将其视为纯 HTML 注释。 注意到@RobG。谢谢。在我发布之前想到了这一点,但是......编辑了 @Jason Gennaro 编辑要好得多(在许多情况下,颠倒顺序也很重要。)【参考方案7】:

您不是在寻找其他人,而是在寻找 &lt;![if !IE]&gt; &lt;something or other&gt; &lt;!--[endif]&gt;(请注意,这不是评论)。

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

您可以找到有关条件 cmets here 的文档。

【讨论】:

我可以使用它来包含 javascript 文件吗?换句话说,如果浏览器是 IE,则包含 ie.js,否则包含 'all_other_browsers.js' 请注意,为了否定 ie 版本,条件必须在括号中,例如&lt;![if !(IE 7)]&gt; 不幸的是,IE 10 不支持 html 条件 cmets,因此检查 if IE在 IE 10 中工作......请参阅下面的 KhanSharp 答案以获得现代解决方案。 为更高版本的IE +所有其他浏览器做一个else。您需要特殊语法&lt;!--[if gt IE 8]&gt; &lt;!-- --&gt; Here is some code for anything but IE 8 and below. &lt;!-- &lt;![endif]--&gt;。见:***.com/a/10159787/903186 @IanCampbell 幸运的是 IE10 不需要像以前版本那样接近匀场水平的任何东西,因此这可以看作是一个好处(IE10 将运行 ES5+ 兼容的 JS)

以上是关于如何在 IE HTML 条件中创建“else”?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 OPL 的替代函数中创建 if 和 else?

如何在 oracle sql 脚本中创建 if-then-else 语句?

在视图 yii2 中创建 if else 语句

如何使用if else条件根据html文件中的浏览器更改doctype。?

如何在 Airflow 中创建条件任务

使用 if else 在 Jupyter 中创建海运图时出错