Kdy použít javascript, a jak
Martin Kopta, vydáno/aktualizováno: 8.10.2001/18.12.2001
Určitě znáte případ, kdy se dostanete na nějaký website, a po něm se nemáte možnost rozumně pohybovat, protože je inkompatibilní s vaším prohlížečem. Pokud nepoužíváte poslední verzi prohlížeče nejrozšířenější značky (nyní je nejrozšířenější MSIE 5.5), přihodí se vám popisovaná událost často. Výsledkem pak obvykle je okamžité opuštění takového webu — takže provozovatel přišel o uživatele, a patrně ho už nikdy nezíská zpět.
Velký průšvih prohlížečů je, že se nelze spolehnout na to, že by každá nová verze rozvíjela tu starou. Někdy výrobce udělá krok stranou, nebo prostě změní směr vývoje. Napsal jsem třeba pln radosti z MSIE 4.0 (nyní méně než 5 %) jednoduchý WYSIWYG textový editor pro redakční systém tak, aby s ním mohli pracovat i lidé, kteří nechápou HTML, a jaké bylo mé překvapení, když jsem za pár měsíců zjistil, že pod MSIE 5.0 (cca 30 %) přestal fungovat a pod MSIE 5.5 (cca 45 % ve statistikách návštěvnosti) opět začal.
Pomineme-li použití nevhodných značek HTML (brzy například iFrame), zjistíme, že nejčastější příčinou nefunkčnosti webu je klientský skript. Mnozí autoři bohužel nejsou s to rozeznávat jednotlivé vývojové a platformní rozdíly mezi verzemi skriptu, a tak aplikace píší jen pro určitý omezený počet prohlížečů.
Posléze webmasteři argumentují tím, že nikdo jiný, než vlastníci programového vybavení, pro které je web připraven, stránky stejně nenavštěvuje, takže není důvod je upravovat i pro ostatní. Bohužel si v tu chvíli neuvědomují, že uživatel, kterému web klade překážky, otevře jednu stránku, odejde a už se nikdy nevrátí, což je mnohdy důvod toho, proč se neobjevují ve statistikách návštěvnosti minoritní platformy.
Vás, jako tvůrce webu určitě zajímá, jak z této nepříjemnosti ven. Především je třeba s velkým přemáháním uznat, že javascript není cosi, co by mělo být nedílnou součástí website, ale pouze nástroj pro manipulaci s prohlížečem (stejně jako třeba akce ve Photoshopu). Chceme-li, aby website byl plně dostupný, musí být funkční i bez podpory skriptů na klientu. Už v tom je kámen úrazu, protože mnozí z nás píší své aplikace rovnou s rolečky (rollover), vyskakovacími (popup) okny a roletkovou (dropdown) navigací.
Zkuste nejdříve napsat website zcela bez použití javascriptu. Až budete hotovi, začněte postupně přidávat funkce zvyšující uživatelské pohodlí a teprve na konec přidejte vizuální efekty. Je pravda, že tímto způsobem na tvorbě webu strávíte více času, na druhou stranu ale web uděláte jen jednou, a pak jej nemusíte dva roky měnit (doporučená doba provozu aplikace webu je 2—3 roky bez zásadních zásahů) a získáte větší rozpětí uživatelských platforem.
O zvýšených nárocích na podporu méně rozšířených platforem obvykle nechtějí slyšet obchodníci. Zkuste se jich zeptat, kolik peněz očekávají, že firmě přinese každý z uživatelů, a pak tuto hodnotu vynásobte počtem uživatelů minoritních platforem (což jsou kromě jiného třeba i lidé, kteří se k Internetu připojují prostřednictvím drahých mobilních zařízení). Pokud byste měli rozšířit podporu na platformy jiné než MSIE 4+ (85 %), znamená to zisk o 17,6 % vyšší. Tento příjem obvykle přesáhne zvýšené náklady.
Pro vyšší kompatibilitu aplikací na webu je třeba zajistit několik jednoduchým předpokladů:
především každý navigační prvek musí fungovat i bez podpory javascriptu — roletková menu musejí mít tlačítko pro odeslání formuláře na server, kde musí existovat obslužný skript;
odkazy
<a href>
a<form action>
nesmějí být směřovány na schemajavascript:
, ale na schemahttp://
(podobně je vhodné zajistit HTTP odezvu i místomailto:
, případně iftp://
ad.);javascriptové akce musejí být vyvolávány pomocí událostních ovladačů — ať už přímo v atributech HTML, nebo nastavené v těle prvku
<script>
(nezapomeňte je však ukončit návratovým kódemreturn false;
, abyste zabránili vykonání původního odkazu);-
k rozlišování verzí javascriptu není vhodné užívat atributu
language
značky<script>
ani objektůnavigator
čiclientInformation
, ale ověření vlastností a objektů, které chceme použít, např.:if(document.getElementById) v = "ecma-262"
Zásadní chybou většiny aplikací jsou nesmyslné odkazy
<a href="#">
, pokud používáte zároveň odkaz v javascriptu. Ujistěte se proto, že úplně každý odkaz směřuje na funkční URL. Rozhodně nepoužívejte atributhref
jako náhraduwindow.status
!
Pokud dodržíte několik výše zmíněných doporučení, tak kromě podpory minoritních platforem získáte i podporu vyhledavacích robotů — ty totiž stále ještě javascriptu nerozumí.
(Procentuální hodnoty zastoupení prohlížečů pocházejí z ověřovacího vzorku Studie internetového publika, kterou v současnosti zpracovává Internet Info.)
© 2001 Martin Kopta, Lupa