如何在 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】:你的问题的解决方法是(注意使用<!-- -->
):
<!--[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!检查<!--[if lte IE 8]> ... ... <![endif]-->
之前这应该涵盖使用CSS媒体查询时要检查的所有条件。
另请注意,没有紧跟在开始 if 语句之后的<!
,“-->”将出现在 IE 9 的页面上,因此您确实希望包含那个。
此语法<!--[if IE]>
在 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】:您不是在寻找其他人,而是在寻找 <![if !IE]> <something or other> <!--[endif]>
(请注意,这不是评论)。
<!--[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 版本,条件必须在括号中,例如<![if !(IE 7)]>
不幸的是,IE 10 不支持 html 条件 cmets,因此检查 if IE
将不在 IE 10 中工作......请参阅下面的 KhanSharp 答案以获得现代解决方案。
为更高版本的IE +所有其他浏览器做一个else。您需要特殊语法:<!--[if gt IE 8]> <!-- --> Here is some code for anything but IE 8 and below. <!-- <![endif]-->
。见:***.com/a/10159787/903186
@IanCampbell 幸运的是 IE10 不需要像以前版本那样接近匀场水平的任何东西,因此这可以看作是一个好处(IE10 将运行 ES5+ 兼容的 JS)以上是关于如何在 IE HTML 条件中创建“else”?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 oracle sql 脚本中创建 if-then-else 语句?