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 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).Microsoft - HTML5 Parsing in IE10 -{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.

Primeri 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 sledećoj 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 određeni -{CSS}- fajl, dok -{IE}- 7 ili starija -{IE}- verzija će to ignorisati. Pretraživač stariji od -{IE}- će ga takođe ignorisati jer izgleda kao standardan -{HTML}- komentar. Tag u drugom primeru će dopustiti -{IE}- verzijama od 5.0 do 7 da pročitaju unutrašnji -{CSS}- stil. Sa različitim upotrebama ovog taga možete takođe 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, s namerom da ovi tagovi budu previđeni 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. 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 takođe 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čan vlasnički mehanizam za dodavanje uslovnih komentara unutar -{JScript}-, poznat kao uslovna kompilacija.

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

Postojalo je takođe nekoliko predefinisanih promenljivih,Conditional Compilation Variables koje se više ne koriste od kada je -{Microsoft}- promenio -{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š CSS filter

Reference

Категорија:HTML Категорија:CSS