Условни коментари

Uslovni komentari su uslovne izjave interpretirane od strane Microsoft-овог Internet Explorer-а у HTML изворном коду. Условни коментари могу бити коришћени да прикажу и сакрију код преко Internet Explorer-а.

Условни коментари у HTML-у[1] прво су се појавили у Microsoft-овом Internet Explorer 5 претраживачу, али је подршка сад већ застарела. У Internet Explorer-у 10 HTML условни коментари нису подржати када је страница у стандардном моду (document mode 10).[2] JScript условни коментари су уведени у Internet Explorer-у 4 и подржани су у свим верзија ма па и у Internet Explorer-у 10, у стандардном моду или компатабилном моду.

Примери

уреди

Једноставан пример који демонстрира како условни коментари раде:

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

Синтакса

уреди

Постоје два типа условних коментара: downlevel revealed (откривени на доњем нивоу), и downlevel hidden (сакривени на доњем нивоу).

Основна синтакса сваког од типова коментара је приказана у следецој табели. Први приказан коментар је основни HTML коментар, који је укључен с намером да пореди и илуструје разлику у синтакси коришћену од стране сваког од типова условних коментара.

Тип коментара Синтакса или могућа вредност
стандардни HTML коментар <!-- Comment content  -->
downlevel-hidden <!--[if expression]> HTML <![endif]-->
downlevel-revealed <![if expression]> HTML <![endif]>

HTML приказан унутар синтаксних блокова у сваком од условних коментара означава било који блок HTML садржаја, укључујући скрипте. Оба типа условних коментара користе условне изразе да означе да ли садржај унутар блока коментара треба да буде рашчлањен или игнорисан. Условни изрази су формирани од комбинација карактеристике, оператора, и/или вредности зависно од карактеристике. Следећа табела приказује подржане карактеристике и описује вредности које свака карактеристика подржава.

Објекат Пример Коментар
IE [if IE] Стринг "IE" је карактеристика одговарајуће верзије Internet Explorer-а коришћене за преглед странице.
вредност [if IE 7] Цео или реалан број одговара верзији претраживача. Враћа Boolean вредност труе ако се број поклапа са верзијом претраживача.
Windows едиција [if WindowsEdition] Internet Explorer 8 на Windows 7. Стринг "WindowsEdition" је карактеристика одговарајуће едиције Microsoft Windows-а коришћене за преглед странице.
вредност [if WindowsEdition 1] Цео или реалан број одговара едицији Windows-а коришћеној за преглед странице. Враћа Boolean вредност true ако се број поклапа са едицијом која се користи. За информацију о подржаним вредностима и едицијама које оне описују, погледајте pdwReturnedProductType параметар GetProductInfo функције.
тачно [if true] Увек је тачно.
Нетачно [if false] Увек је нетачно.

Следећа табела описује операторе који могу бити коришћени да креирају условне изразе.

Објекат Пример Коментар
! [if !IE] NOT оператор. Ово је постављено одмах испред карактеристике, оператора, или подизраза да преокрене Boolean значење израза.
lt [if lt IE 5.5] 'Less-than' оператор. Враћа true ако је први аргумент мањи од другог.
lte [if lte IE 6] 'Less-than or equal' оператор. Враћа true ако је први аргумент мањи или једнак другом.
gt [if gt IE 5] 'Greater-than' оператор. Враћа true ако је први аргумент већи од другог.
gte [if gte IE 7] 'Greater-than or equal' оператор. Враћа true ако је први аргумент већи или једнак другом.
( ) [if !(IE 7)] Оператори са подизразима. Користе се у коњукцији са boolean операторима да креирају комплексније изразе.
& [if (gt IE 5)&(lt IE 7)] AND оператор. Враћа true ако су сви подизрази тачни.
| [if (IE 6)|(IE 7)] OR оператор. Враћа true ако је неки од подизраза тачан.

Downlevel-hidden условни коментари

уреди

Испод су два примера "downlevel hidden" условних коментара:

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

или

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

Директива у првом примеру ће дозволити да IE 8 прочита одредјени CSS фајл, док IE 7 или старија IE верзија ће то игнорисати. Претраживач старији од IE ће га такодје игнорисати јер изгледа као стандардан HTML коментар. Таг у другом примеру ће допустити IE веријама од 5.0 до 7 да прочитају унутрашњи CSS стил. Са различитим употребама овог тага можете такодје издвојити IE 6, IE 5, или верзију IE која је новија (већа) или старија (мања) од назначене верзије.

Downlevel-revealed условни коментари

уреди

Испод је пример "downlevel revealed" условног 'коментара', који није (X)HTML коментар уопште, упркос варљивом називу, који користи дефаулт Microsoft-ову синтаксу:

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

Овај пример приказује који би требао да буде откривен само не-IE претраживачима, као "false" стање на IE (и отуда стање је игнорисано), док су тагови као такви непрепознатљиви (и отуда игнорисани) на не-IE претраживачима. Ово није валидан HTML или XHTML.

Microsoft признаје да ова синтакса није стандардизовано означавање,[3] с намером да ови тагови буду превидјени од стране осталих претраживача и прикажу садржај у средини. У циљу да осигурају компилацију са W3C стандардом, неки web развијачи користе алтернативне технике.[4] за downlevel-revealed условне коментаре:

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

Иако донекле збуњујуће структуре, ова специфична синтакса је валидна (X)HTML и корисна за условне секције намењене специјално за не-IE претраживаче; ако је услов true (на пример, ако написан код треба да се прикаже на не-IE претраживачима и на неким верзијама IE), IE ће приказати "-->" присуство пре HTML садржаја. Овај проблем је лако решен додавањем "<!" на иницијални "-->" као у наредном примеру:

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

Додатно "<!" игноришу не-IE претраживачи; то је такодје игнорисано од стране IE без обзира на услов јер ако је false, све унутар условног коментара је игнорисано, а ако је true, резултујући таг <!--> је непрепознатљив и као такав игнорисан.

Условни коментари у JScript

уреди

Почевши са Internet Explorer-ом 4, постоји сличнан власнички механизам за додавање условних коментара унутар JScript, познат као условна компилација.[5]

Примери кода:

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

Постојало је такодје неколико предефинисаних променљивих,[6] које се више не користе од када је Microsoft прозменио JScript engine од IE6 са XP SP3 и сада пријављује као:

@_jscript_version == 5.7

Као резултат, могући начин да се детектује Internet Explorer верзија коришћењем условних коментара може се видети испод:

<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>

Види још

уреди

Референце

уреди
  1. ^ „Абоут Цондитионал Цомментс”. Мицрософт Цорпоратион. Архивирано из оригинала 13. 10. 2008. г. Приступљено 28. 09. 2014. 
  2. ^ Мицрософт - ХТМЛ5 Парсинг ин ИЕ10
  3. ^ „МСДН — Абоут Цондитионал Цомментс”. Архивирано из оригинала 3. 1. 2007. г. Приступљено 3. 1. 2007. 
  4. ^ „Валид доwнлевел-ревеалед цондитионал цомментс | 456 Береа Стреет”. Архивирано из оригинала 19. 08. 2014. г. Приступљено 28. 09. 2014. 
  5. ^ „Цондитионал Цомпилатион”. Мицрософт Цорпоратион. Архивирано из оригинала 06. 09. 2008. г. Приступљено 28. 09. 2014. 
  6. ^ Цондитионал Цомпилатион Вариаблес