< ! ——[ if! IE ] > 在这种情况下不能正常工作

我不太明白

<!--[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 content in here
</style>
<!--<![endif]-->

到实际的 HTML 页面(在头部)它工作。

我该怎么补救?

当我删除 <!-->时,我只检查了正在工作的 Internet Explorer(IE) ,但是现在在 Firefox 中,不,是 CSS文件也应用到了 Firefox。所以我重新添加了 <!-->并删除了 /(并将其添加到主模板中,这样 CMS就不会将其重新添加到主模板中) ,所有这些在 Firefox 中都可以正常工作,但是现在样式表正在应用到 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。

364224 次浏览

首先,正确的语法是:

<!--[if IE 6]>
<link type="text/css" rel="stylesheet" href="/stylesheets/ie6.css" />
<![endif]-->

试试这些帖子:

还有一件事你可以做:

用 jQuery 检查浏览器:

if($.browser.msie) { // Do something... }

在这种情况下,您可以更改某些元素的 CSS 规则或添加 一个新的 CSS 链接参考:

看看这个: 用 jQuery 动态应用样式表

除了 Internet Explorer 之外,其他浏览器将条件语句视为注释,因为它们包含在注释标记中。

<!--[if IE]>
Non-Internet Explorer browsers ignore this
<![endif]-->

然而,当你的目标浏览器是 Internet Explorer Internet Explorer 时,你必须使用两个注释,一个在代码之前,一个在代码之后。Internet Explorer 浏览器会忽略它们之间的代码,而其他浏览器会将其视为正常代码。因此,针对非 InternetExplorer 浏览器的语法是:

<!--[if !IE]-->
Internet Explorer ignores this
<!--[endif]-->

注意: 这些条件注释是 从 Internet Explorer 10开始不再支持

您需要为 <!-- [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] -->
<!--[if !IE]><!--><script src="zepto.min.js"></script><!--<![endif]-->
<!--[if IE]><script src="jquery-1.7.2.min.js"></script><![endif]-->

注意: 这些条件注释是 从 IE 10开始不再支持。

我用这个就行了:

<!--[if !IE]><!--> if it is not IE <!--<![endif]-->

微软推荐的下层显示条件“注释”语法如下:

<![if !IE]>
<link type="text/css" rel="stylesheet" href="/stylesheets/no-ie.css" />
<![endif]>

这些不是评论,但它们运作正常。

针对 Internet Explorer 用户:

<!--[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 检测到,所有其他浏览器都将其视为正常的注释。

瞄准 Internet Explorer 6Internet Explorer 7等。你必须在 如果声明中使用“大于等于”或“小于(等于)”。像这样:

大于或等于:

<!--[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]-->

来源: mediacollege.com

为什么 Internet Explorer 定位不起作用的原因: Internet Explorer 10以及更高版本不再支持有条件的评论。来自微软官方网站:

在 Internet Explorer 中不再支持有条件的评论 10个标准和怪癖模式,以改善互操作性和 符合 HTML5标准。

详情请参阅此处: 有条件的评论不再被支持

如果你迫切地需要瞄准 Internet Explorer,你可以使用 jQuery 代码来添加一个 ie类,然后使用 CSS 中的 .ie类来瞄准 Internet Explorer 浏览器。

if ($.browser.msie) {
$("html").addClass("ie");
}

在 jQuery 1.9之后,$.browser就不可用了。如果你升级到1.9以上的 jQuery,或者你已经使用了它,你可以在 jQuery 之后加入 jQuery 迁移脚本,这样它就会添加缺失的部分: JQuery 迁移插件

或者,请检查这个问题以找到可能的解决办法: 在更新到 jQuery 1.9.1之后的 Browser.msie 错误 < a href = “ https://stackoverflow. com/questions/14892095/museum-msie-error-after-update-to-jQuery-1.9-1”> Browser.msie error after update to jQuery 1.9.1

对于 Internet Explorer浏览器:

<!--[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]>

对于所有 Internet Explorer 大于 Internet Explorer 8或者的浏览器,所有非 IE 浏览器:

<!--[if (gt IE 8)|!(IE)]><!--><script src="/_JS/library/jquery-2.1.1.min.js"></script><!--<![endif]-->

条件注释是以 abc0开头的注释,除了 Internet Explorer,任何浏览器都无法读取它。

从2011年开始,条件注释不支持从 Internet Explorer 10开始,微软在那个时候宣布了这一点: 有条件注释不再受支持

使用 有条件的注释的唯一选择是请求 Internet Explorer 以支持条件评论的 Internet Explorer 9运行你的站点。

你可以编写自己的 CSS 和/或 JavaScript 文件,只针对 Internet Explorer,而其他浏览器不会加载或执行它。

这个代码片段展示了如何让 Internet Explorer 10Internet Explorer 11运行包含自定义代码的 只有 CSS只有 Js来解决 Internet Explorer 兼容性问题。

    <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>

如果您正在使用 IE10或以上,正如在 http://tanalin.com/en/articles/ie-version-js/中提到的,条件注释不再受支持。 您可以将 https://gist.github.com/jasongaylord/5733469作为一种替代方法,也可以从 Navator.userAgent 检查 Trident 版本。如果浏览器正在兼容模式下工作,也会验证这一点。

我使用这段 JavaScript 代码来检测一个 Internet Explorer 浏览器:

if (navigator.appVersion.toUpperCase().indexOf("MSIE") != -1 ||
navigator.appVersion.toUpperCase().indexOf("TRIDENT") != -1 ||
navigator.appVersion.toUpperCase().indexOf("EDGE") != -1)
{
$("#ie-warning").css("display", "block");
}

这对我来说适用于所有超过版本6的 Internet Explorer 版本(Internet Explorer 7Internet Explorer 8Internet Explorer 9Internet Explorer 10等等,铬合金3直到现在,以及 火狐版本3直到现在) :

// Test if running in Internet Explorer or not
function isIE () {
var myNav = navigator.userAgent.toLowerCase();
return (myNav.indexOf('msie') != -1 || myNav.indexOf('trident') != -1) ? true : false;
}

谢谢你费尔南多68 我用这个:

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.');
});
}


直到 Internet Explorer 9 :

<!--[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>
<![endif]-->

这是 Internet Explorer 9

  @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {Enter your CSS here}