2012-08-14 7 views
6

ich ein Skript habe ich außer IE-Versionen in jedem Browser ausgeführt werden soll unter 9, natürlich, diese bedingten Anweisungen funktionieren für IE:Mehrere bedingten Anweisungen in <head> des Dokument

<!--[if gt IE 8]> 
    JavaScript stuff here 
<![endif]--> 

Aber dieser Code ist dann in keinem anderen Browser außer IE9 ausgeführt.

Gibt es eine Möglichkeit, mehrere bedingte Anweisungen zusammen zu verwenden, z.

<!--[if gt IE 8 OR !IE]> 
    JavaScript stuff here 
<![endif]--> 
+2

Sie könnte einfach eine Klasse zum Körper hinzufügen, wenn es IE8 oder weniger ist und das Skript nur ausführen, wenn die Klasse erkannt wird. – elclanrs

Antwort

4

Sie verwenden einen bedingten Kommentar wie folgt aus:

<!--[if gte IE 9]><!--> 
    <script></script> 
<!--<![endif]--> 

Es gibt zwei Arten von bedingten Kommentaren: solche, bei denen der gesamte Block aus allen Browsern kommentiert wird (Ihre erste Version oben) und solche, bei denen nur die "Bedingung" auskommentiert ist (diese Version hier).

Also alle nicht-IE-Browser sehen <script></script> außerhalb der Kommentare, IE vor v9 parsen die Kommentare und wissen, dass HTML zu ignorieren.

0

Ich denke, dass diese Seite Ihnen helfen sollte:

http://www.cssplay.co.uk/menu/conditional.html

Im Einzelnen:

I have found that the following code will allow you to target non-IE browsers 

<!--[if !IE]><!--> 
<h1>You are NOT using Internet Explorer</h1> 
<!--<![endif]--> 

..and finally to target non-IE and a specific IE browser 
(or any combinations using lte lt or gt gte). 

<!--[if IE 6]><!--> 
<h1>You are using EITHER Internet Explorer version 6<br /> 
OR a non-IE browser</h1> 
<!--<![endif]--> 
<h1>You are using 
<!--[if IE 6]>IE6 and not <!--> 
a non-IE browser 
<!--<![endif]--></h1> 
2

Es wäre besser, statt der bedingten Kommentare Feature-Erkennung zu verwenden. Zum Beispiel nach Microsoft-Dokumentation here Internet Explorer 10 wird keine bedingte Kommentare in Ihrem Skript vollständig ignorieren wie:

<!--[if IE]> 
    This content is ignored in IE10. 
    <![endif]--> 

Sie können diesen Patch durch Zusatz:

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

Aber dies ist nicht eine lange Lösung

+0

Warum gibt IE10 die Unterstützung für bedingte Anweisungen zurück? Sind bedingte Anweisungen wirklich so schlecht: S – Sean

+0

Könnten Sie bitte auch erklären, was Sie unter Feature-Erkennung verstehen?Ich denke, ich könnte verstehen, aber nicht 100% sicher – Sean

+0

Der Grund, Microsoft gibt auf diesem Link ich für verbesserte Interoperabilität und die Einhaltung von HTML5 zur Verfügung gestellt. – Bruno

2

Sie können logische Operatoren verwenden, um bedingte Anweisungen wie [if (gt IE 5)&(lt IE 7)] oder [if (IE 6)|(IE 7)] wie erklärt here "beizutreten".

Verwenden von bedingten Anweisungen zu Kommentar Inhalt aus sieht verwirrend aus, ich frage mich, warum so viele Antworten darauf hinwiesen. Dies ist die Notation ich vertraut bin, mit more examples on quirksmode:

<!--[if IE]> 
According to the conditional comment this is IE<br /> 
<![endif]--> 
<!--[if !IE]> --> 
According to the conditional comment this is not IE<br /> 
<!-- <![endif]--> 

Diese Syntax in MS specs, mit mehr Funktionen wie benutzerdefinierte Version Vektorerfassung empfohlen. Denken Sie daran, dass IE10 bei allen Absichten und Zwecken als Nicht-IE-Browser erkannt wird und als einer referenziert werden muss (hoffentlich mit keinen signifikanten Macken, die eine Adressierung mit bedingten Anweisungen erfordern)

Verwandte Themen