Comentariu condiționat - Conditional comment

Comentariile condiționate sunt declarații condiționale interpretate de versiunile Microsoft Internet Explorer 5 până la 9 în cod sursă HTML . Ele pot fi utilizate pentru a furniza și ascunde codul către și de la aceste versiuni de Internet Explorer. Comentariile condiționate nu sunt acceptate în Internet Explorer 10 și 11 .

Comentariile condiționate în HTML au apărut pentru prima dată în browserul Microsoft Internet Explorer 5, deși suportul a fost învechit. În Internet Explorer 10, comentariile condiționate HTML nu sunt acceptate atunci când pagina este în modul standard (modul document 10). Comentariile condiționate JScript au fost introduse în Internet Explorer 4 și au continuat să fie acceptate în Internet Explorer 10, în modul standard sau în modul de compatibilitate.

Exemple

Iată un exemplu simplu care demonstrează modul în care funcționează comentariile condiționate.

<!--[if IE 6]>
<p>You are using Internet Explorer 6.</p>
<![endif]-->

Sintaxă

Există două tipuri de „comentarii condiționate”: nivel inferior dezvăluit și nivel inferior ascuns .

Sintaxa de bază a fiecărui tip de comentariu este prezentată în tabelul următor. Primul comentariu afișat este Comentariul HTML de bază, care este inclus în scopul comparației și pentru a ilustra diferita sintaxă utilizată de fiecare tip de comentariu condiționat.

Tipul de comentariu Sintaxă sau valoare posibilă
comentariu HTML standard <! - Conținutul comentariului ->
jos-ascuns <! - [if expression ]> HTML <! [endif] ->
nivel inferior-dezvăluit <! [if expression ]> HTML <! [endif]>

Codul HTML afișat în interiorul blocului de sintaxă din fiecare dintre comentariile condiționate denotă orice bloc de conținut HTML, inclusiv script. Ambele tipuri de comentarii condiționate utilizează o expresie condițională pentru a indica dacă conținutul din blocul de comentarii trebuie analizat sau ignorat. Expresia condițională este formată dintr-o combinație de caracteristică, operator și / sau valoare, în funcție de caracteristică. Următorul tabel prezintă caracteristicile acceptate și descrie valorile acceptate de fiecare caracteristică.

Articol Exemplu cometariu
IE [dacă IE] Șirul „IE” este o caracteristică corespunzătoare versiunii de Internet Explorer folosită pentru vizualizarea paginii Web.
valoare [dacă IE 7] Un număr întreg sau cu virgulă mobilă corespunzător versiunii browserului. Returnează o valoare booleană adevărată dacă numărul versiunii se potrivește cu versiunea browserului. Pentru mai multe informații, consultați Vectorii de versiune .
WindowsEdition [dacă WindowsEdition] Internet Explorer 8 pe Windows 7. Șirul „WindowsEdition” este o caracteristică corespunzătoare ediției Microsoft Windows folosită pentru vizualizarea paginii Web.
valoare [dacă WindowsEdition 1] Un număr întreg corespunzător ediției Windows utilizate pentru a vizualiza pagina Web. Returnează o valoare booleană adevărată dacă valoarea se potrivește cu ediția utilizată. Pentru informații despre valorile acceptate și edițiile pe care le descriu, consultați parametrul pdwReturnedProductType al funcției GetProductInfo.
Adevărat [daca e adevarat] Întotdeauna evaluează la adevărat.
fals [dacă este fals] Întotdeauna se consideră fals.

Tabelul următor descrie operatorii care pot fi utilizați pentru a crea expresii condiționale.

Articol Exemplu cometariu
! [dacă! IE] Operatorul NU. Aceasta este plasată imediat în fața caracteristicii , operatorului sau subexprimării pentru a inversa semnificația booleană a expresiei.
lt [dacă este IE 5.5] Operatorul mai puțin decât. Returnează adevărat dacă primul argument este mai mic decât al doilea argument.
lte [dacă lte IE 6] Operatorul mai mic sau egal. Returnează adevărat dacă primul argument este mai mic sau egal cu al doilea argument.
gt [dacă gt IE 5] Cel mai mare decât operatorul. Returnează adevărat dacă primul argument este mai mare decât al doilea argument.
gte [dacă gte IE 7] Operatorul mai mare sau egal. Returnează adevărat dacă primul argument este mai mare sau egal cu al doilea argument.
() [dacă! (IE 7)] Operatori de subexpresie. Folosit împreună cu operatorii booleeni pentru a crea expresii mai complexe.
& [dacă (gt IE 5) și (lt IE 7)] Operatorul AND. Returnează adevărat dacă toate subexpresiile sunt evaluate la adevărat
| [dacă (IE 6) | (IE 7)] Operatorul OR. Returnează adevărat dacă oricare dintre subexpresiile se evaluează la adevărat.

Comentariu condițional ascuns la nivel inferior

Mai jos sunt două exemple de comentarii condiționate „ascunse la nivel inferior”:

<!--[if IE 8]>
<link href="ie8only.css" rel="stylesheet">
<![endif]-->

sau

<!--[if lte IE 7]>
<style type="text/css">
/* CSS here */
</style>
<![endif]-->

Directiva din primul exemplu va permite IE 8 să citească fișierul CSS specificat, în timp ce versiunile IE 7 sau mai vechi IE o vor ignora. Alte browsere decât IE îl vor ignora, de asemenea, deoarece arată ca un comentariu HTML standard. Eticheta din al doilea exemplu va permite versiunilor IE 5.0 până la 7 să citească stilul CSS intern. Cu diferite utilizări ale acestei etichete, puteți selecta IE 6, IE 5 sau versiuni ale IE care sunt mai noi (mai mari) sau mai vechi (mai puțin) decât o versiune specificată.

Comentariu condițional dezvăluit la nivel inferior

Mai jos este un exemplu de „comentariu” condițional „dezvăluit la nivel inferior”, care nu este deloc un comentariu (X) HTML , în ciuda numelui înșelător, folosind sintaxa implicită Microsoft:

<![if !IE]>
<link href="non-ie.css" rel="stylesheet">
<![endif]>

Acest exemplu arată conținut care ar trebui să fie expus numai browserelor care nu sunt IE, deoarece condiția este „falsă” pe IE (și, prin urmare, conținutul este ignorat), în timp ce etichetele în sine nu sunt recunoscute (și, prin urmare, ignorate) în browserele non-IE. . Acest lucru nu este valid HTML sau XHTML.

Microsoft recunoaște că această sintaxă nu este un markup standardizat, intenționând ca aceste etichete să fie trecute cu vederea de alte browsere și să expună conținutul în mijloc. Pentru a asigura conformitatea cu standardele W3C, unii dezvoltatori web utilizează o tehnică alternativă pentru comentariile condiționate dezvăluite la nivel inferior:

<!--[if !IE]>-->
<link href="non-ie.css" rel="stylesheet">
<!--<![endif]-->

Deși oarecum confuză în structură, această sintaxă specifică este validă (X) HTML și este utilă pentru secțiunile condiționate destinate în mod special browserelor non-IE; dacă condiția se evaluează la adevărat (de exemplu, dacă scrierea unui cod menită să fie afișată pe browsere non-IE și pe unele versiuni ale IE), IE va afișa apoi „->” prezent înaintea conținutului HTML. Această problemă este ușor de rezolvat prin prelungirea „<!” la inițialul "->" după cum urmează:

<!--[if gt IE 6]><!-->
This code displays on non-IE browsers and on IE 7 or higher.
<!--<![endif]-->

Extra "<!" este ignorat de browserele non-IE; este, de asemenea, ignorat de IE, indiferent de condiție, deoarece dacă este fals , totul din comentariul condiționat este ignorat și, dacă este adevărat , eticheta rezultată <!--> este nerecunoscută și, prin urmare, ignorată.

Comentarii condiționate în JScript

Începând cu Internet Explorer 4, există un mecanism de proprietate similar pentru adăugarea de comentarii condiționate în JScript , cunoscut sub numele de compilare condițională.

Exemple de cod:

<script>
/*@cc_on
  document.write("You are using IE4 or higher");
@*/
</script>

Au existat, de asemenea, mai multe variabile predefinite, deși acestea nu mai pot fi invocate, deoarece Microsoft a modificat motorul JScript al IE6 cu XP SP3 și acum raportează:

@_jscript_version == 5.7

Ca rezultat, o modalitate posibilă de a detecta versiunea Internet Explorer utilizând compilarea condiționată poate fi văzută mai jos:

<script>
/*@cc_on

  @if (@_jscript_version == 11)
    document.write("You are using IE11 with an older document mode");
  @elif (@_jscript_version == 10)
    document.write("You are using IE10");
  @elif (@_jscript_version == 9)
    document.write("You are using IE9");
  @elif (@_jscript_version == 5.8)
    document.write("You are using IE8");
  @elif (@_jscript_version == 5.7)
    document.write("You are using IE" + (!window.XMLHttpRequest ? 6 : 7));
  @elif (@_jscript_version == 5.6)
    document.write("You are using IE6");
  @elif (@_jscript_version == 5.5)
    document.write("You are using IE5.5");
  @elif (@_jscript_version < 5.5)
    document.write("You are using a version older than IE5.5");
  @else
    document.write("You are using an unknown version of IE");
  @end
 
@*/
</script>

Cu toate acestea, compilarea condiționată nu mai este acceptată în modul Standard Internet Explorer 11 .

Vezi si

linkuri externe

Referințe