Uslovni komentari su uslovne izjave interpretirane od strane Microsoft-ovog Internet Explorer-a u HTML izvornom kodu. Uslovni komentari mogu biti korišćeni da prikažu i sakriju kod preko Internet Explorer-a.

Uslovni komentari u HTML-u[1] prvo su se pojavili u Microsoft-ovom Internet Explorer 5 pretraživaču, ali je podrška sad već zastarela. U Internet Explorer-u 10 HTML uslovni komentari nisu podržati kada je stranica u standardnom modu (document mode 10).[2] JScript uslovni komentari su uvedeni u Internet Explorer-u 4 i podržani su u svim verzija ma pa i u Internet Explorer-u 10, u standardnom modu ili kompatabilnom modu.

Jednostavan primer koji demonstrira kako uslovni komentari rade:

<!--[if IE]>
<p>Koristite Internet Explorer.</p>
<![endif]-->
<!--[if !IE]-->
<p>Ne koristite Internet Explorer.</p>
<!-- <![endif]-->

Sintaksa

уреди

Postoje dva tipa uslovnih komentara: downlevel revealed (otkriveni na donjem nivou), i downlevel hidden (sakriveni na donjem nivou).

Osnovna sintaksa svakog od tipova komentara je prikazana u sledecoj tabeli. Prvi prikazan komentar je osnovni HTML komentar, koji je uključen s namerom da poredi i ilustruje razliku u sintaksi korišćenu od strane svakog od tipova uslovnih komentara.

Tip komentara Sintaksa ili moguća vrednost
standardni HTML komentar <!-- Comment content  -->
downlevel-hidden <!--[if expression]> HTML <![endif]-->
downlevel-revealed <![if expression]> HTML <![endif]>

HTML prikazan unutar sintaksnih blokova u svakom od uslovnih komentara označava bilo koji blok HTML sadržaja, uključujući skripte. Oba tipa uslovnih komentara koriste uslovne izraze da označe da li sadržaj unutar bloka komentara treba da bude raščlanjen ili ignorisan. Uslovni izrazi su formirani od kombinacija karakteristike, operatora, i/ili vrednosti zavisno od karakteristike. Sledeća tabela prikazuje podržane karakteristike i opisuje vrednosti koje svaka karakteristika podržava.

Objekat Primer Komentar
IE [if IE] String "IE" je karakteristika odgovarajuće verzije Internet Explorer-a korišćene za pregled stranice.
vrednost [if IE 7] Ceo ili realan broj odgovara verziji pretraživača. Vraća Boolean vrednost true ako se broj poklapa sa verzijom pretraživača.
Windows edicija [if WindowsEdition] Internet Explorer 8 na Windows 7. String "WindowsEdition" je karakteristika odgovarajuće edicije Microsoft Windows-a korišćene za pregled stranice.
vrednost [if WindowsEdition 1] Ceo ili realan broj odgovara ediciji Windows-a korišćenoj za pregled stranice. Vraća Boolean vrednost true ako se broj poklapa sa edicijom koja se koristi. Za informaciju o podržanim vrednostima i edicijama koje one opisuju, pogledajte pdwReturnedProductType parametar GetProductInfo funkcije.
tačno [if true] Uvek je tačno.
Netačno [if false] Uvek je netačno.

Sledeća tabela opisuje operatore koji mogu biti korišćeni da kreiraju uslovne izraze.

Objekat Primer Komentar
! [if !IE] NOT operator. Ovo je postavljeno odmah ispred karakteristike, operatora, ili podizraza da preokrene Boolean značenje izraza.
lt [if lt IE 5.5] 'Less-than' operator. Vraća true ako je prvi argument manji od drugog.
lte [if lte IE 6] 'Less-than or equal' operator. Vraća true ako je prvi argument manji ili jednak drugom.
gt [if gt IE 5] 'Greater-than' operator. Vraća true ako je prvi argument veći od drugog.
gte [if gte IE 7] 'Greater-than or equal' operator. Vraća true ako je prvi argument veći ili jednak drugom.
( ) [if !(IE 7)] Operatori sa podizrazima. Koriste se u konjukciji sa boolean operatorima da kreiraju kompleksnije izraze.
& [if (gt IE 5)&(lt IE 7)] AND operator. Vraća true ako su svi podizrazi tačni.
| [if (IE 6)|(IE 7)] OR operator. Vraća true ako je neki od podizraza tačan.

Downlevel-hidden uslovni komentari

уреди

Ispod su dva primera "downlevel hidden" uslovnih komentara:

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

ili

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

Direktiva u prvom primeru će dozvoliti da IE 8 pročita odredjeni CSS fajl, dok IE 7 ili starija IE verzija će to ignorisati. Pretraživač stariji od IE će ga takodje ignorisati jer izgleda kao standardan HTML komentar. Tag u drugom primeru će dopustiti IE verijama od 5.0 do 7 da pročitaju unutrašnji CSS stil. Sa različitim upotrebama ovog taga možete takodje izdvojiti IE 6, IE 5, ili verziju IE koja je novija (veća) ili starija (manja) od naznačene verzije.

Downlevel-revealed uslovni komentari

уреди

Ispod je primer "downlevel revealed" uslovnog 'komentara', koji nije (X)HTML komentar uopšte, uprkos varljivom nazivu, koji koristi default Microsoft-ovu sintaksu:

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

Ovaj primer prikazuje koji bi trebao da bude otkriven samo ne-IE pretraživačima, kao "false" stanje na IE (i otuda stanje je ignorisano), dok su tagovi kao takvi neprepoznatljivi (i otuda ignorisani) na ne-IE pretraživačima. Ovo nije validan HTML ili XHTML.

Microsoft priznaje da ova sintaksa nije standardizovano označavanje,[3] s namerom da ovi tagovi budu previdjeni od strane ostalih pretraživača i prikažu sadržaj u sredini. U cilju da osiguraju kompilaciju sa W3C standardom, neki web razvijači koriste alternativne tehnike.[4] za downlevel-revealed uslovne komentare:

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

Iako donekle zbunjujuće strukture, ova specifična sintaksa je validna (X)HTML i korisna za uslovne sekcije namenjene specijalno za ne-IE pretraživače; ako je uslov true (na primer, ako napisan kod treba da se prikaže na ne-IE pretraživačima i na nekim verzijama IE), IE će prikazati "-->" prisustvo pre HTML sadržaja. Ovaj problem je lako rešen dodavanjem "<!" na inicijalni "-->" kao u narednom primeru:

<!--[if gt IE 6]><!-->
Ovaj kod se prikazuje na ne-IE pretraživačima i na IE 7 ili novijem.
<!--<![endif]-->

Dodatno "<!" ignorišu ne-IE pretraživači; to je takodje ignorisano od strane IE bez obzira na uslov jer ako je false, sve unutar uslovnog komentara je ignorisano, a ako je true, rezultujući tag <!--> je neprepoznatljiv i kao takav ignorisan.

Uslovni komentari u JScript

уреди

Počevši sa Internet Explorer-om 4, postoji sličnan vlasnički mehanizam za dodavanje uslovnih komentara unutar JScript, poznat kao uslovna kompilacija.[5]

Primeri koda:

<script>
/*@cc_on
  document.write("Koristite IE4 ili noviji");
@*/
</script>

Postojalo je takodje nekoliko predefinisanih promenljivih,[6] koje se više ne koriste od kada je Microsoft prozmenio JScript engine od IE6 sa XP SP3 i sada prijavljuje kao:

@_jscript_version == 5.7

Kao rezultat, mogući način da se detektuje Internet Explorer verzija korišćenjem uslovnih komentara može se videti ispod:

<script>
/*@cc_on

  @if (@_jscript_version > 10)
    document.write("Koristite noviju verziju od IE10");
  @elif (@_jscript_version == 10)
    document.write("Koristite IE10");
  @elif (@_jscript_version == 9)
    document.write("Koristite IE9");
  @elif (@_jscript_version == 5.8)
    document.write("Koristite IE8");
  @elif (@_jscript_version == 5.7 && window.XMLHttpRequest)
    document.write("Koristite IE7");
  @elif (@_jscript_version == 5.6 || (@_jscript_version == 5.7 && !window.XMLHttpRequest))
    document.write("Koristite IE6");
  @elif (@_jscript_version == 5.5)
    document.write("Koristite IE5.5");
  @elif (@_jscript_version < 5.5)
    document.write("Koristite verziju stariju od IE5.5");
  @else
    document.write("Koristite nepoznatu verziju IE");
  @end
 
@*/
</script>

Vidi još

уреди

Reference

уреди
  1. ^ „About Conditional Comments”. Microsoft Corporation. Архивирано из оригинала 13. 10. 2008. г. Приступљено 28. 09. 2014. 
  2. ^ Microsoft - HTML5 Parsing in IE10
  3. ^ „MSDN — About Conditional Comments”. Архивирано из оригинала 3. 1. 2007. г. Приступљено 3. 1. 2007. 
  4. ^ „Valid downlevel-revealed conditional comments | 456 Berea Street”. Архивирано из оригинала 19. 08. 2014. г. Приступљено 28. 09. 2014. 
  5. ^ „Conditional Compilation”. Microsoft Corporation. Архивирано из оригинала 06. 09. 2008. г. Приступљено 28. 09. 2014. 
  6. ^ Conditional Compilation Variables