Klávesové zkratky na tomto webu - rozšířené Na obsah stránky

Translate to English… Ins Deutsche übersetzen…

Kouzlo s podmíněným komentářem

Tento článkem je vlastně odpovědí na e-mail Honzy Biena, který se ptal na čachry, které jsem tuhle prováděl s podmíněnými komentáři. Totiž, obecně panuje představa, že jeden druh komentářů (downlevel-hidden) je validní a druhý (downlevel-revealed) nikoliv. A já se právě pokusil ty nevalidní upravit tak, aby validní byly. ;)

Nejprve se podívejme na oficiální dokumentaci (nebo článek v češtině).

Máme tu tzv. „downlevel-hidden“ nebo chcete-li „skrývající“ komentář:

<!--[if IE 5]>
Tohle vidí jen IE verze 5
<![endif]-->

A také „downlevel-revealed“ aneb „odhalující“ komentář:

<![if !IE 5]>
Tohle vidí všichni kromě IE verze 5
<![endif]>

Nenechte se zmást tím, co se nachází mezi hranatýma závorkama, a zobecněme, že pro otevření komentáře existují dva oficiální zápisy <!--[if ???]> a <![if ???]>, a dále pro uzavření opět dva <![endif]--> a <![endif]>. To je důležitý výchozí bod.

Tedy ten podmíněný komentář s negací lze bezpochyby zapsat i takto:

<!--[if !IE]>
Tohle vidí všichni kromě IE
<![endif]-->

Perfektní službu nám nyní prokazuje zvýrazňovač syntaxe FSHL, díky kterému jasně vidíme zádrhel zmíněného zápisu. Totiž větu „Tohle vidí všichni kromě IE“ sice ostatní prohlížeče vidí, ale bohužel jako součást velkého komentáře. Což je nám vcelku houby platné, že?

Dobře, proč tedy ten načatý komentář nepřerušit?

<!--[if !IE]>
komentář --> tohle už ne <!-- opět komentář
<![endif]-->

Odsud už je jen krůček k optimalizaci:

<!--[if !IE]> -->
Tohle vidí všichni kromě IE
<!-- <![endif]-->

Jak prozrazuje FSHL, syntaxi jsme učinili za dost a výsledkem je plně validní a funkční podmíněný komentář, kterým lze vložit kód, jenž IE nevidí, ať se snaží sebevíc.

Můžete si to vyzkoušet.

Děkuji za pozornost.

napsáno 14. 4. 2006 | karma 48. líbil se vám článek? | shlédnuto 63267x | nahoru

Komentáře RSS 2.0 komentářů » přidat

avatar

#1 goophy http://goophy.net nový

Děkuji za pozornost.

Teď už snad jen zatleskak, stoupnout si a odejít z posluchárny pln dojmu, že jsem strávil těch pár minut užitečně, když jsem si četl tenhle článek. Vážně to bylo dobrý. ;)

Posláno 14. 4. 2006 v 1.45 | Odpovědět
avatar

#2 Tomik http://tomik.jmx.cz nový

Musím říci, že když je takto k ráno, člověk barvišky a FSHL opravdu ocení… :-)

Posláno 14. 4. 2006 v 5.12 | Odpovědět
avatar

#3 Jan Renner jan.renner@volny.cz nový

Excelentní. Fakt. Když jsem poprvé viděl revealed CC, rezignoval jsem na jeho použití pro nevaliditu a dál se o něj nezajímal.

Ještě mě zaujala konstrukce typu

<!--[if !IE 5]> <!-->
<p>Já nejsem MSIE 5</p>
<!--> <![endif]-->

kterou jsi ukazoval před dvěma dny u Honzy Biena. Ta funguje podle očekávání – nahrazuje i selektivní revealed CC, takže by se na ně dalo úplně zapomenout. Sekvence

<!-->

je pro mě ovšem co do významu docela záhada. Teoreticky je v pořádku a při použití mimo komentář komentář otevírá a při použití uvnitř komentáře ho zavírá :) MSIE (včetně 7 beta 2) si to ale nemyslí a bere ji nejspíš jako samostatně stojící komentář. Toho využívá ta zmíněná konstrukce. Testoval jsi to? Prakticky bych to asi nepoužil (ono v podstatě odlišovat od sebe verze IE ani není proč), ale je to zajímavé.

Posláno 14. 4. 2006 v 5.36 | Odpovědět
avatar

#4 David Grudl http://davidgrudl.com nový

#3 Jan Renner: Prakticky žádný browser neumí správně nakládat s komentáři (viz tento test), což je dáno především jejich podivnou až nevhodnou syntaxí. Takže ačkoliv sekvence <!--> znamená, jak píšeš, začátek nebo konec komentáře, IE ji chápe jinak a po svém. Ovšem nelze na to spoléhat.

Že se tato verze objevila u Honzy Biena je má chyba, mělo tam být jen --> a <!--. I když v tomto případě funguje obojí stejně.

Posláno 14. 4. 2006 v 6.26 | Odpovědět

#5 Skic nový

výborné

Posláno 14. 4. 2006 v 11.40 | Odpovědět

#6 luk nový

Vysvětlím celý postup,
i s rizikem, že mě zase
nějaký *** nařkne
z krádeže ;)

Klidek, normalni lide dokazi poznat, kdo je inteligentni a kdo nouma.

Posláno 14. 4. 2006 ve 12.33 | Odpovědět

#7 Petr http://na-mobily.cz nový

Skutečně velmi zajimavy „hack“. Ted jen nez prijde nejaka nova verze xml a zakaze pouzivat zavorky v komentari ;)

Posláno 14. 4. 2006 v 17.44 | Odpovědět
avatar

#8 Roj http://roj.bloguje.cz nový

[0] rado se stalo! :-)

Posláno 14. 4. 2006 ve 22.08 | Odpovědět

#9 JiK nový

Je možné takto odlišit Operu a Firefox?

Posláno 26. 8. 2006 ve 21.29 | Odpovědět

#10 Petr nový

Prima článek, ještě kdyby to tak fugnovalo pro více komentářů a ne jen pro jeden.

Posláno 10. 2. 2007 ve 23.17 | Odpovědět

#11 Honza nový

Nevím proč, ale v IE 6 při použití rámců dělá tento zápis problémy. Do rámce se na načte úplně jiná stránka a vícekrát zasebou ???

Posláno 11. 8. 2007 v 17.09 | Odpovědět

Tento článek byl uzavřen. Už není možné k němu přidávat komentáře ani hlasovat

Výtah na začátek článku na první komentář

Názory čtenářů v diskusích nejsou názory provozovatele webu, a ten za jejich obsah neodpovídá.

phpFashion © 2004, 2010 David Grudlo webu

Pokud není uvedeno jinak, podléhá obsah těchto stránek licenci Creative Commons BY-NC-ND Creative Commons License BY-NC-ND

Ukázky zdrojových kódů smíte používat s uvedením autora a URL tohoto webu bez dalších omezení.