<!--[if !IE]> 不工作
Posted
技术标签:
【中文标题】<!--[if !IE]> 不工作【英文标题】:<!--[if !IE]> is not working as expected in this case 【发布时间】:2012-11-26 23:01:42 【问题描述】:我遇到了麻烦
<!--[if !IE]>
工作。我想知道是不是因为我的文档中有这个
<!doctype html>
<!--[if lt IE 7]> <html class="ie6 oldie"> <![endif]-->
<!--[if IE 7]> <html class="ie7 oldie"> <![endif]-->
<!--[if IE 8]> <html class="ie8 oldie"> <![endif]-->
<!--[if gt IE 8]><!-->
<html class="">
<!--<![endif]-->
当我添加时
<!--[if !IE]><!-->
<link type="text/css" rel="stylesheet" href="/stylesheets/no-ie.css" />
<!--<![endif]-->
到我的标题由于某种原因它不起作用。但是,如果我添加
<!--[if !IE]><!-->
<style>
All my css in here
</style>
<!--<![endif]-->
到它工作的实际 html 页面(在标题中)。 有什么建议? 干杯
更新我的问题
好的,当我删除时
<!-->
我只检查了 IE,它正在工作,但现在回到 FF,no-ie.css 也已应用于 FF。所以我在<!-->
中重新添加并删除了/(并将其添加到主模板中,这样cms 就不会将其重新添加)并且一切都在FF 中工作,但现在样式表正在应用于IE!
所以我尝试了
<!--[if IE]>
<link type="text/css" rel="stylesheet" href="/stylesheets/no-ie.css">
<![endif]-->
和
<!--[if !IE]> -->
<link type="text/css" rel="stylesheet" href="/stylesheets/no-ie.css">
<!-- <![endif]-->
那没有用。 基本上我试图让这个页面工作http://css-tricks.com/examples/ResponsiveTables/responsive.php,但将css移动到样式表中。当然,它必须很简单。我错过了什么?如果不需要,我宁愿不使用 JQuery。 干杯
【问题讨论】:
你不需要紧跟在<!--[if !IE]>
之后的<!-->
注意:如果 IE 只能运行到 IE9。
有些人在某些页面上留下了有趣的 IF IE 消息。
@cameronjonesweb 你能链接参考吗,否则这样的陈述没有那么有用?
@trainoasis,我可以,除了我的评论是 5 岁
【参考方案1】:
首先正确的语法是:
<!--[if IE 6]>
<link type="text/css" rel="stylesheet" href="/stylesheets/ie6.css" />
<![endif]-->
试试这个帖子: http://www.quirksmode.org/css/condcom.html 和 http://css-tricks.com/how-to-create-an-ie-only-stylesheet/
你可以做的另一件事:
用 jQuery 检查浏览器:
if($.browser.msie) // do something...
在这种情况下,您可以更改某些元素的 css 规则或添加 新的 CSS 链接参考:
阅读:http://rickardnilsson.net/post/2008/08/02/Applying-stylesheets-dynamically-with-jQuery.aspx
【讨论】:
查看上面 user1324409 的答案以获得更准确的答案。 由于 jQuery 更新,任何使用 $.browser.msie 的人都必须包含 jquery-migrate.js,然后这将起作用。 注意:这些条件cmets是no longer supported from IE 10 onwards 答案中提供的链接已失效。【参考方案2】:IE 以外的浏览器将条件语句视为 cmets,因为它们包含在注释标签内。
<!--[if IE]>
Non-IE browsers ignore this
<![endif]-->
但是,当您的目标浏览器不是 IE 时,您必须使用 2 个 cmets,一个在代码之前,一个在代码之后。 IE 会忽略它们之间的代码,而其他浏览器会将其视为普通代码。因此,针对非 IE 浏览器的语法是:
<!--[if !IE]-->
IE ignores this
<!--[endif]-->
注意:这些条件 cmets 是 no longer supported from IE 10 onwards。
【讨论】:
太好了。感谢那。样式表可以工作,但是我现在遇到的问题是,在页面顶部的标题上方,它出现在 ie (标签去了在标题区域而不是正文中) -1:这个答案不正确,因为<!--[if !IE]-->IE ignores this<!--[endif]-->
没有对 IE 隐藏! (7、8 或 9)
没有一个答案对我有用,也许在最近发布的 IE10 中发生了一些变化(也在 IE9 模式下尝试过)。 - 所有尝试最终都到达所有浏览器(IE 和非 IE)上的 !IE 部分。
IE10 不支持条件语句。
注意 中的空格 - 不应该有任何空格(例如在 !-- 和 [.不能使用空格。【参考方案3】:
您需要为<!-- [if !IE] -->
留一个空格我的完整css 块如下所示,因为IE8 的媒体查询很糟糕
<!-- IE 8 or below -->
<!--[if lt IE 9]>
<link rel="stylesheet" type="text/css" href="/Resources/css/master1300.css" />
<![endif]-->
<!-- IE 9 or above -->
<!--[if gte IE 9]>
<link rel="stylesheet" type="text/css" media="(max-width: 100000px) and (min-width:481px)"
href="/Resources/css/master1300.css" />
<link rel="stylesheet" type="text/css" media="(max-width: 480px)"
href="/Resources/css/master480.css" />
<![endif]-->
<!-- Not IE -->
<!-- [if !IE] -->
<link rel="stylesheet" type="text/css" media="(max-width: 100000px) and (min-width:481px)"
href="/Resources/css/master1300.css" />
<link rel="stylesheet" type="text/css" media="(max-width: 480px)"
href="/Resources/css/master480.css" />
<!-- [endif] -->
【讨论】:
感谢您的评论,但如果我使用 然后其他浏览器也应用这个。 不是重点,让其他浏览器应用该部分吗? -1:这里提到的!IE
技术实际上会执行 IE 7 到 10 的注释块。
注意:这些条件cmets是no longer supported from IE 10 onwards【参考方案4】:
<!--[if !IE]><!--><script src="zepto.min.js"></script><!--<![endif]-->
<!--[if IE]><script src="jquery-1.7.2.min.js"></script><![endif]-->
注意:这些条件 cmets 是 no longer supported from IE 10 onwards.
【讨论】:
截至 2013 年 6 月,这是此页面上唯一的正确答案。 这一行是否缺少右尖括号?不应该是: 这与所有其他条件 cmets 解决方案一起,不会检测 IE 10 / IE 11 它在 IE 11 中不起作用,它加载脚本,即使条件是 !IE @Giedrius 从 IE10 开始,不再支持条件 cmets:msdn.microsoft.com/en-us/library/ie/hh801214(v=vs.85).aspx【参考方案5】:我使用它并且它有效:
<!--[if !IE]><!--> if it is not IE <!--<![endif]-->
【讨论】:
这导致 Firefox 只是将整个内容视为我的评论。 @Charmander 解决方案适用于 IE 和 Firefox - 注意:这些条件cmets是no longer supported from IE 10 onwards【参考方案6】:Microsoft 推荐的下层显示条件“cmets”的语法是这样的:
<![if !IE]>
<link type="text/css" rel="stylesheet" href="/stylesheets/no-ie.css" />
<![endif]>
这些不是 cmets,但它们可以正常工作。
【讨论】:
找到这个支持这个答案的链接,还有很多其他可以帮助线程的信息,我认为这是一个重要的主题......我看到的唯一区别是隐藏或显示的语法是使用过,我不确定这会如何影响其他浏览器...msdn.microsoft.com/en-us/library/ms537512.ASPX 注意:这些条件cmets是no longer supported from IE 10 onwards【参考方案7】:针对 IE 用户:
<!--[if IE]>
Place Content here for Users of Internet Explorer.
<![endif]-->
针对所有其他人:
<![if !IE]>
Place Content here for Users of all other Browsers.
<![endif]>
条件评论只能被 Internet Explorer 检测到,所有其他浏览器都将其作为普通评论线程。
以 IE 6,7 等为目标。您必须在 If 语句中使用“大于等于”或“小于(等于)”。像这样。
大于或等于:
<!--[if gte IE 7]>
Place Content here for Users of Internet Explorer 7 or above.
<![endif]-->
小于:
<!--[if lt IE 6]>
Place Content here for Users of Internet Explorer 5 or lower.
<![endif]-->
Source: mediacollege.com
【讨论】:
注意:这些条件cmets是no longer supported from IE 10 onwards【参考方案8】:如果有人仍然访问此页面,想知道为什么 ie 定位不起作用,则更新。 IE 10 及更高版本不再支持条件 cmets。来自微软官网:
已在 Internet Explorer 中删除对条件 cmets 的支持 10 种标准和怪癖模式,用于提高互操作性和 符合 HTML5。
更多详情请看这里:http://msdn.microsoft.com/en-us/library/ie/hh801214(v=vs.85).aspx
如果您迫切需要定位 ie,您可以使用此 jquery 代码添加一个 ie 类,然后在您的 css 中使用 .ie 类来定位 ie 浏览器。
if ($.browser.msie)
$("html").addClass("ie");
更新:$.browser 在 jQuery 1.9 之后不可用。如果你升级到 1.9 以上的 jQuery 或者你已经在使用它,你可以在 jQuery 之后包含 jQuery 迁移脚本,以便它添加缺失的部分: jQuery Migrate Plugin
或者,请查看此线程以了解可能的解决方法:browser.msie error after update to jQuery 1.9.1
【讨论】:
这是一个非常好的解决方案!我什至不需要在 dom 树上使用它来应用某些类。 请注意,自 jQuery 1.3 起已弃用,并在 1.9 中删除【参考方案9】:IE浏览器:
<!--[if IE]>
<meta http-equiv="Content-Type" content="text/html; charset=Unicode">
<![endif]-->
对于所有非 IE 浏览器:
<![if !IE]>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
<![endif]>
对于所有大于 8 的 IE 或所有非 IE 浏览器:
<!--[if (gt IE 8)|!(IE)]><!--><script src="/_JS/library/jquery-2.1.1.min.js"></script><!--<![endif]-->
【讨论】:
【参考方案10】:我得到这个代码在我的浏览器上工作:
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
此代码的注意事项:HTML5 Shiv 和 Respond.js IE8 支持 HTML5 元素和媒体查询
【讨论】:
【参考方案11】:条件注释是以<!--[if IE]>
开头的注释,除了IE之外的任何浏览器都无法读取。
从 2011 年起,不支持从 IE 10 开始的条件注释,正如微软当时宣布的那样 https://msdn.microsoft.com/en-us/library/hh801214(v=vs.85).aspx
使用条件 cmets 的唯一选项是请求 IE 以支持条件 cmets 的 IE 9 运行您的站点。
您可以编写自己的 css 和/或 js 文件,仅用于 ie,其他浏览器不会加载或执行它。
这段代码 sn-p 展示了如何让 IE 10 或 11 运行 ie-only.css 和 ie-only.js,其中包含解决 IE 兼容性问题的自定义代码。
<html>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9">
<!--[if IE]>
<meta http-equiv="Content-Type" content="text/html; charset=Unicode">
<link rel="stylesheet" type="text/css" href='/css/ie-only.css' />
<script src="/js/ie-only.js"></script>
<![endif]-->
</html>
【讨论】:
【参考方案12】:如果您使用的是 IE 10 或更高版本,如 http://tanalin.com/en/articles/ie-version-js/ 中所述,不再支持条件 cmets。 您可以参考https://gist.github.com/jasongaylord/5733469 作为替代方法,该方法也会从 navigator.userAgent 中检查 Trident 版本。如果浏览器在兼容模式下工作,这也会得到验证。
【讨论】:
【参考方案13】:我正在使用这个 javascript 来检测 IE 浏览器
if (
navigator.appVersion.toUpperCase().indexOf("MSIE") != -1 ||
navigator.appVersion.toUpperCase().indexOf("TRIDENT") != -1 ||
navigator.appVersion.toUpperCase().indexOf("EDGE") != -1
)
$("#ie-warning").css("display", "block");
【讨论】:
【参考方案14】:这适用于所有高于版本 6 的浏览器(IE7、8、9、10 等,Chrome 3 到现在的版本,FF 版本 3 到现在的版本):
//test if running in IE or not
function isIE ()
var myNav = navigator.userAgent.toLowerCase();
return (myNav.indexOf('msie') != -1 || myNav.indexOf('trident') != -1) ? true : false;
【讨论】:
【参考方案15】:谢谢Fernando68,我用过这个:
function isIE ()
var myNav = navigator.userAgent.toLowerCase();
return (myNav.indexOf('msie') != -1 || myNav.indexOf('trident') != -1) ? true : false;
if(isIE())
$.getScript('js/script.min.js', function()
alert('Load was performed.');
);
【讨论】:
【参考方案16】:这是 IE9 之前的版本
<!--[if IE ]>
<style> .someclass
text-align: center;
background: #00ADEF;
color: #fff;
visibility:hidden; // in case of hiding
#someotherclass
display: block !important;
visibility:visible; // in case of visible
</style>
这是针对IE9之后的
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) enter your CSS here
【讨论】:
以上是关于<!--[if !IE]> 不工作的主要内容,如果未能解决你的问题,请参考以下文章
innerHTML 在 FF 中工作,但在 IE 中不工作!
无法使 CKEditor InsertHTML 在 IE 8 上工作