2013-10-21 11 views
17

Ich habe mich selbst verrückt fahren versucht, Kommentar Bedingungen zu bekommen, um zu arbeiten, und ich habe kein Glück kann jemand erklären, was ich falsch mache?IF IE conditionals funktioniert nicht

Hier ist mein Code:

 <!--[if IE 10]> 
      IE IS VERSION 10<br /> 
     <![endif]--> 
     <!--[if !IE]><!--> 
      Browser is not IE 
     <!--<![endif]--> 
     <!--[if lt IE 9]> 
      IE IS LESS THAN VERSION 9<br /> 
     <![endif]--> 

Was passiert ist frustrierende inconsistant. Wenn ich die Seite mit dem obigen Code in IE8 lade, bekomme es die Nachricht "IE IST WENIGER ALS VERSION 9" Großartig oder? Nein, denn wenn ich die gleiche Seite in IE10 laden kommt die Meldung „Browser ist nicht IE“

Warum es nicht glauben, dass IE10 ist kein IE-Browser ?! Ich habe Seite für Seite gecrawlt, aber es scheint nichts mit meinem Code zu tun zu haben, was ich gefunden habe.

+0

Der einzige funktionierende Code ist der letzte in Ihrem Snippet. IE10 unterstützt keine bedingten Kommentare, daher funktioniert "[if IE 10]" nicht. Nur IEs <10 unterstützt bedingte Kommentare, daher ist "[if! IE]" nutzlos. Wie Sie auf Ihrem informiertes Code sehen können, gibt es einen „Syntaxfehler“ in der '! IE' Bedingung, damit der Text' Browser ist nicht IE' eigentlich in jedem Browser angezeigt werden soll ... – Teemu

+11

Ich hasse Internet Explorer – wvdz

Antwort

15

IE 10 nicht unterstützt bedingte Anweisungen.

Conditional statements in Internet Explorer 10.. Es behandelt bedingte Kommentare als reguläre HTML-Kommentare und wird vollständig ignoriert.

Verwenden Sie eine Funktionserkennungsbibliothek wie Modernizr anstelle der Browsererkennung.

eine Lösung in dieser gefunden auf impressivewebscomment:

Here is Demo to test

Die Lösung lautet:

if (Function('/*@cc_on return [email protected]*/')()) { 
    alert('IE 10'); 
} else { 
    alert('Not IE 10'); 
} 

Es

  • nicht bedingte Kommentare benötigt;
  • funktioniert auch wenn Kommentar Stripping Kompression/Verarbeitung;
  • keine ie10-Klasse im Internet hinzugefügt   Explorer   11;
  • eher mit Internet wie geplant arbeiten   Explorer   11 im Internet ausgeführt   Explorer   10 Kompatibilitätsmodus;
  • benötigt kein eigenständiges Skript-Tag (kann einfach zu anderem JavaScript-Code im Kopf hinzugefügt werden).
  • benötigt jQuery nicht
+0

Der „Cross-Browser best Practices“ link ist gebrochen. –

+0

@ Fabián seine perfekt für mich arbeiten. siehe https://www.modern.ie/en-us/category/code-with-standards –

3

IE 10 bedingte Kommentare gelöscht.

Sie können so etwas ähnliches in Javascript tun:

if ($.browser.msie && $.browser.version === 10) { 
    // stuff here (like adding an IE10 class to the body or html tag 
} 
+1

Ja, aber das erfordert mich jQUERY :( – TheSnooker

+1

Nun, zu schließen, wenn conditionals haben auf IE10 fallen gelassen worden Sie nicht zu viele Optionen haben, nicht wahr? – Rafael

+5

Leider ist diese Funktion in jQuery 1.9 entfernt wurde. – user1618143

1

Versuchen Sie fügen Sie den folgenden Meta-Tag in der Nähe der oben auf der Seite zu testen, in Internet Explorer 9 Verhalten zu entscheiden:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9"> 

Dies liegt daran, bedingte Kommentare gewesen in den Standards und Macken von Internet Explorer 10 für verbesserte Interoperabilität und Einhaltung von HTML5 entfernt.Dies bedeutet, dass Bedingte Kommentare jetzt wie in anderen Browsern als reguläre Kommentare behandelt werden. Diese Änderung kann Seiten auswirken ausschließlich für Windows Internet Explorer oder Seiten geschrieben, das Schnüffeln ihr Verhalten in Internet Explorer Browser zu ändern.

14

Ich bin überrascht, dass niemand in einer CSS-only Lösung hinzugefügt. Wenn Sie nur CSS verwenden möchten, dann eine Anweisung wie folgt verwendet werden:

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { 
    /* Put your IE-only styles here. Works for IS 10 & IE 11*/ 
} 

Auf diese Weise müssen Sie nicht auf jquery verlassen oder eine beliebige HTML-Markup. Schreib es einfach in die CSS und du bist gut zu gehen.

Nun ist es ein Hack? Wahrscheinlich. Dies hängt von der Microsoft High-Kontrast-Tag, aber da kein anderer Browser des MS-Tag verwendet, dann sollten Sie gut zu gehen.

Schließlich sehen Sie sich diese Seiten für weitere Informationen:

Blog Post

MS Site on the contrast tag

+0

Sie Maximus, ehrfürchtig Trick danken ......... ................ Ich hasse dich IE – akokani