<! - [if! IE]> funktioniert nicht

139

Ich habe Probleme zu bekommen

<!--[if !IE]>

arbeiten. Ich frage mich, ob es daran liegt, dass ich dies in meinem Dokument habe

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

Wenn ich hinzufüge

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

zu meinem Header aus irgendeinem Grund funktioniert es nicht. Allerdings, wenn ich hinzufüge

<!--[if !IE]><!-->
    <style>
        All my css in here
    </style>
    <!--<![endif]-->

zur eigentlichen HTML-Seite (in der Kopfzeile) funktioniert es. Irgendwelche Vorschläge? Prost

Update auf meine Frage

Ok, als ich entfernt habe, habe <!-->ich nur den IE eingecheckt, der funktionierte, aber jetzt wieder in FF wurde das no-ie.css auch auf FF angewendet. Also habe ich <!-->das / wieder hinzugefügt und das / entfernt (und das in die Hauptvorlage eingefügt, damit die cms es nicht wieder hinzufügen) und alles funktioniert wieder in FF, aber jetzt wird das Stylesheet auf den IE angewendet! Also habe ich es versucht

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

und

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

Und das hat nicht funktioniert. Grundsätzlich versuche ich, diese Seite zum Laufen zu bringen http://css-tricks.com/examples/ResponsiveTables/responsive.php, aber verschiebe das CSS in ein Stylesheet. Sicher muss es einfach sein. Was vermisse ich? Ich würde JQuery lieber nicht verwenden, wenn ich nicht muss. Prost

user1516788
quelle
1
Sie brauchen das nicht <!-->sofort nach dem<!--[if !IE]>
techfoobar
29
Hinweis: Wenn der IE nur bis zum IE9 funktioniert.
Cameronjonesweb
Einige Leute haben auf einigen Seiten lustige IF IE-Nachrichten hinterlassen.
NeverMind9
@cameronjonesweb Kannst du bitte eine Referenz verlinken, sonst sind Aussagen wie diese nicht so nützlich?
Trainoasis
@trainoasis, ich könnte, außer mein Kommentar ist 5 Jahre alt
cameronjonesweb

Antworten:

236
<!--[if !IE]><!--><script src="zepto.min.js"></script><!--<![endif]-->
<!--[if IE]><script src="jquery-1.7.2.min.js"></script><![endif]-->

Hinweis: Diese bedingten Kommentare werden ab IE 10 nicht mehr unterstützt .

Thinking80s
quelle
39
Ab Juni 2013 ist dies die einzig richtige Antwort auf dieser Seite.
JohnB
2
Fehlt dieser Linie eine Schließwinkelhalterung? Sollte es nicht sein: <! - [if! IE]> <! -> <script src = "zepto.min.js"> </ script> <! -> <! [Endif] ->
n00shie
1
Dies, zusammen mit allen anderen Lösungen für bedingte Kommentare, wird IE 10 / IE 11
Lloyd Banks
9
Es funktioniert nicht in IE 11, es lädt Skript, auch wenn Bedingung ist! IE
Giedrius
49
@Giedrius Ab IE10 werden bedingte Kommentare nicht mehr unterstützt : msdn.microsoft.com/en-us/library/ie/hh801214(v=vs.85).aspx
acdcjunior
70

Andere Browser als IE behandeln die bedingten Anweisungen als Kommentare, da sie in Kommentar-Tags eingeschlossen sind.

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

Wenn Sie jedoch auf einen Browser abzielen, der NICHT IE ist, müssen Sie zwei Kommentare verwenden, einen vor und einen nach dem Code. IE ignoriert den Code zwischen ihnen, während andere Browser ihn als normalen Code behandeln. Die Syntax für das Targeting von Nicht-IE-Browsern lautet daher:

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

Hinweis: Diese bedingten Kommentare werden ab IE 10 nicht mehr unterstützt .

user1324409
quelle
1
Das ist großartig. Dank dafür. Das Stylesheet funktioniert, aber das Problem, das ich jetzt habe, ist, dass es oben auf der Seite über der Kopfzeile in <! - [if! IE] -> <! - [endif] -> angezeigt wird (das Tag ging im Header-Bereich nicht body)
user1516788
21
-1: Diese Antwort ist falsch , da <!--[if !IE]-->IE ignores this<!--[endif]-->wird nicht von IE versteckt! (7, 8 oder 9)
JohnB
3
Keine der Antworten hat bei mir funktioniert, vielleicht hat sich in der letzten Version von IE10 etwas geändert (auch im IE9-Modus versucht). - Alle Versuche erreichten in allen Browsern (IE und nicht IE) den Bereich! IE.
Danny Varod
2
IE10 unterstützt keine bedingten Anweisungen.
Scorpius
1
Beachten Sie die Leerzeichen in <! - [if IE]> und <! [Endif] -> - es sollten keine Leerzeichen vorhanden sein (z. B. zwischen! - und [. Es funktioniert nicht mit Leerzeichen.
Robert Skarżycki
37

Ein Update, wenn jemand diese Seite noch erreicht und sich fragt, warum das Targeting nicht funktioniert. IE 10 und höher unterstützen keine bedingten Kommentare mehr. Von der offiziellen MS-Website:

Die Unterstützung für bedingte Kommentare wurde in den Internet Explorer 10-Standards und Mackenmodi entfernt, um die Interoperabilität und die Einhaltung von HTML5 zu verbessern.

Weitere Informationen finden Sie hier: http://msdn.microsoft.com/en-us/library/ie/hh801214(v=vs.85).aspx

Wenn Sie dringend auf dh zielen müssen, können Sie diesen jquery-Code verwenden, um eine ie-Klasse zu hinzufügen, und dann die .ie-Klasse in Ihrem CSS verwenden, um dh auf Browser zu zielen.

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

Update: $ .browser ist nach jQuery 1.9 nicht mehr verfügbar. Wenn Sie ein Upgrade auf jQuery über 1.9 durchführen oder es bereits verwenden, können Sie das jQuery-Migrationsskript nach jQuery einfügen , damit fehlende Teile hinzugefügt werden : jQuery Migrate Plugin

Alternativ überprüfen Sie diesen Thread auf mögliche Problemumgehungen : browser.msie-Fehler nach dem Update auf jQuery 1.9.1

Selay
quelle
Das ist eine wirklich schöne Lösung! Ich muss es nicht einmal im Dom-Baum verwenden, um bestimmte Klassen anzuwenden.
mmm
2
Bitte beachten Sie, dass dies seit jQuery 1.3 veraltet ist und in 1.9
Jøran
13

Ich benutze das und es funktioniert:

<!--[if !IE]><!--> if it is not IE <!--<![endif]-->
Francis
quelle
Dies führt dazu, dass Firefox nur den gesamten Inhalt als Kommentar für mich behandelt. @Charmander Lösung funktionierte sowohl für IE als auch für Firefox - <! [If! IE]> <! [Endif]>
Tom Chamberlain
3
Hinweis: Diese bedingten Kommentare werden ab IE 10 nicht mehr unterstützt
Flimm
12

Die von Microsoft empfohlene Syntax für vom Downlevel offenbarte bedingte „Kommentare“ lautet wie folgt:

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

Dies sind keine Kommentare, aber sie funktionieren ordnungsgemäß.


quelle
Ich habe diesen Link gefunden, der diese Antwort unterstützt. Er enthält auch viele andere Informationen, die dem Thread helfen könnten. Ich denke, dies ist ein wichtiges Thema. Der einzige Unterschied besteht darin, ob eine versteckte oder aufgedeckte Syntax verwendet wird, und ich bin mir nicht sicher, wie dies funktioniert wird andere Browser beeinflussen ... msdn.microsoft.com/en-us/library/ms537512.ASPX
user1360809
2
Hinweis: Diese bedingten Kommentare werden ab IE 10 nicht mehr unterstützt
Flimm
8

Zuallererst lautet die richtige Syntax:

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

Versuchen Sie diesen Beitrag: http://www.quirksmode.org/css/condcom.html und http://css-tricks.com/how-to-create-an-ie-only-stylesheet/

Eine andere Sache, die Sie tun können:

Überprüfen Sie den Browser mit jQuery:

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

In diesem Fall können Sie die CSS-Regeln für einige Elemente ändern oder eine neue CSS-Linkreferenz hinzufügen:

Lesen Sie dies: http://rickardnilsson.net/post/2008/08/02/Applying-stylesheets-dynamically-with-jQuery.aspx

BorisD
quelle
Eine genauere Antwort finden Sie in der obigen Antwort von user1324409.
Chris Peters
2
Aufgrund der jQuery-Updates muss jeder, der $ .browser.msie verwendet, jquery-migrate.js einschließen, und dann funktioniert dies.
AspiringCanadian
1
Hinweis: Diese bedingten Kommentare werden ab IE 10 nicht mehr unterstützt
Flimm
Der in der Antwort angegebene Link ist tot.
Pankaj
8

Sie müssen ein Leerzeichen für den <!-- [if !IE] --> My Full CSS-Block setzen, da IE8 mit Medienabfragen schrecklich ist

<!-- IE 8 or below -->   
<!--[if lt IE 9]>
<link rel="stylesheet" type="text/css"  href="https://stackoverflow.com/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="https://stackoverflow.com/Resources/css/master1300.css" />
<link rel="stylesheet" type="text/css" media="(max-width: 480px)"
    href="https://stackoverflow.com/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] -->
John Hayford
quelle
Vielen Dank für Ihren Kommentar, aber wenn ich <! - [if! IE] -> <link rel = "stylesheet" type = "text / css" href = "/ stylesheets / no-ie.csss" /> <verwende! - [endif] -> dann wenden dies auch andere Browser an.
user1516788
3
Ist das nicht der Punkt, wenn andere Browser diesen Abschnitt anwenden?
John Hayford
1
-1: Die !IEhier erwähnte Technik wird tatsächlich den kommentierten Block für IE 7 bis 10 ausführen.
Ian Campbell
1
Hinweis: Diese bedingten Kommentare werden ab IE 10 nicht mehr unterstützt
Flimm
8

Für die Ausrichtung auf IE-Benutzer:

<!--[if IE]>
Place Content here for Users of Internet Explorer.
<![endif]-->

Für die Ausrichtung auf alle anderen:

<![if !IE]>
Place Content here for Users of all other Browsers.
<![endif]>

Die bedingten Kommentare können nur von Internet Explorer erkannt werden, alle anderen Browser fädeln sie als normale Kommentare ein.

Um auf IE 6,7 usw. abzuzielen, müssen Sie in der If-Anweisung "Größer als gleich" oder "Kleiner als (gleich)" verwenden. So was.

Größer als oder gleich:

<!--[if gte IE 7]>
Place Content here for Users of Internet Explorer 7 or above.
<![endif]-->

Weniger als:

<!--[if lt IE 6]>
Place Content here for Users of Internet Explorer 5 or lower.
<![endif]-->

Quelle: mediacollege.com

Knabbereien
quelle
2
Hinweis: Diese bedingten Kommentare werden ab IE 10 nicht mehr unterstützt
Flimm
7

Dies gilt bis 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>

Dies ist für nach IE9

  @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {enter your CSS here}
Chintu das coole Kind
quelle
5

Für IE-Browser:

<!--[if IE]>
<meta http-equiv="Content-Type" content="text/html; charset=Unicode">
<![endif]-->

Für alle Nicht-IE-Browser:

<![if !IE]>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
<![endif]>

Für alle IE größer als 8 ODER alle Nicht-IE-Browser:

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

Bedingter Kommentar ist ein Kommentar, mit <!--[if IE]>dem kein Browser außer dem IE lesen kann.

ab 2011 Bedingter Kommentar wird ab IE 10 nicht unterstützt, wie von Microsoft in dieser Zeit angekündigt https://msdn.microsoft.com/en-us/library/hh801214(v=vs.85).aspx

Die einzige Möglichkeit, die bedingten Kommentare zu verwenden, besteht darin, den IE aufzufordern, Ihre Site als IE 9 auszuführen, der die bedingten Kommentare unterstützt.

Sie können Ihre eigenen CSS- und / oder JS-Dateien nur für schreiben, und andere Browser werden sie nicht laden oder ausführen.

Dieses Code-Snippet zeigt, wie IE 10 oder 11 ie-only.css und ie-only.js ausführen. Es enthält benutzerdefinierte Codes zur Lösung von IE-Kompatibilitätsproblemen.

    <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>
Schattiger Sherif
quelle
1

Dies funktioniert für mich in allen Browsern, die größer als Version 6 sind (IE7, 8, 9, 10 usw., Chrome 3 bis zu dem, was es jetzt ist, und FF Version 3 bis zu dem, was es jetzt ist):

//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;
        }
Fandango68
quelle
0

Ich benutze dieses Javascript, um den IE-Browser zu erkennen

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

Danke Fernando68, ich habe das benutzt:

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.');
     });
}
Rodrigo Prazim
quelle
-1

Ich bekomme diesen Code funktioniert in meinem Browser:

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

Hinweis für diesen Code: HTML5 Shiv und Respond.js IE8-Unterstützung von HTML5-Elementen und Medienabfragen

Chetabahana
quelle