Nejkratší možná detekce Internet Exploreru má pouhých 9 znaků
Před dvěma roky Dean Edwards hledal krátkou a elegantní detekci Internet Exploreru a přišel s pěkným řešením /*@cc_on!@*/false
(pokud vás zajímá princip, přečtěte si o podmíněných komentářích v JavaScriptu Internet Exploreru). Již samovolně pak vznikla soutěž o nejkratší možnou detekci (zapojili se i Češi) a objevila se řada originálních nápadů, např./*@cc_on!@*/0;
nebo superkrátký a pravděpodobně dosavadní vítěz //@cc_on=1
. Tyto výrazy vrací true
v Internet Exploreru, v ostatních prohlížečích vrací false
.
Ačkoliv fungovaly spolehlivě, měly jednu chybu – byly špatně zapamatovatelné. Andrea Giammarchi přišel s dalším řešením, postaveném na chybě v IE, konkrétně na nerozpoznání escapovaného znaku „v“ (IE jej vidí jako písmeno „v“). Pro detekci IE vám tak postačí devíti znakový výraz 'v'=='v'
, který je již snadno zapamatovatelný.
Můžeme vůči němu namítat, že je se jedná o využití známé chyby prohlížeče, která může být jednoho dne (třeba v IE9) opravena a kód přestane fungovat. Můžeme ostatně namítat, že dnes bychom se měli jakékoliv detekci prohlížečů vyhnout obloukem, jak se třeba snaží v poslední verzi vývojáři jQuery, protože dnes už detekce prohlížečů není nutná. To vše nám ale nebrání v malé oslavě nového rekordmana o velikosti pouhých 9 znaků.
(Zdroj: Ajaxian)
jQuery přístup, tedy testovat přímo chování prohlížeče, bez detekce jeho konkrétní verze, nemůže vždy fungovat. Vlastně, v jQuery funguje pouze protože tento framework je sám o sobě dost omezený.. Bylo by krásné, kdybychom mohli všechno detekovat skrz Javascript, ale to prostě nejde. Příklady? backgroundImage cache pro IE6, tabindex pro neformulářové prvky, 2px bug pozice myšího kurzoru, memory leaks, existence specialních eventů (selectstart, mousewheel..) a tak dále.. I když musím říct, že se mi jQuery přístup líbí, prohlašovat, že detekce prohlížeče není třeba je blbost.