Odkazy a javascript
Používání javascriptu u hypertextových odkazů je dnes poměrně rozšířená záležitost. Velice mě proto udivuje obrovské množství špatných příkladů, na které v praxi každý den narážím.
V následujícím krátkém textu se pokusím upozornit na dvě základní pravidla, u kterých jsem přesvědčen, že je vhodné se jich držet, a která by vám měla pomoci vytvářet přístupnější a bezpečnější weby.
Odkaz musí fungovat i s vypnutým javascriptem
Této tématiky jsem se již trochu dotkl ve starším článku o elegantním řešení otevírání nových oken při zachování normy xHTML Strict. I když jsou dnes v módě vysoce interaktivní aplikace a vypnutý javascript v prohlížeči běžného uživatele je spíše výjimkou, vyplatí se vytvářet aplikace tak, aby je bylo možno použít i bez spuštěných skriptů na straně klienta - ať už kvůli (indexovacím) robotům nebo kvůli přístupnosti. Řešení, kdy nabídneme pokročilý obsah a funkce prohlížečům, které je podporují, a kdy dáme zároveň alespoň základní funkce těm ostatním, je zkrátka ideální.
U odkazů bychom se tak měli zeširoka vyhnout konstrukcím jako<a href="javascript:window.open('cil.html');">cil</a>nebo<a href="#" onclick="window.open('cil.html');">cil</a>které zkrátka bez javascriptu nefungují.Kód za odkazem nesmí mít destruktivní účinky
Ještě v čerstvé paměti mám poměrně úsměvnou historku, kdy program na stahování stránek HTTracker promazal velkou část z obsahu jednoho firemního intranetu. Ten byl postaven na řešení PLONE a pro smazání dokumentů zde byl k dispozici odkaz chráněný javascriptovým alertem. Jenže ouha, HTTracker samozřejmě žádný javascript nespouštěl a při pokusu stáhnout veškerý zadaný obsah ho namísto toho vytrvale likvidoval.
Možná se zdá, že si teď trochu protiřečím. Na jedné straně tvrdím, že odkaz má fungovat i bez javascriptu, a na straně druhé zase upozorňují na to, že někdy fungovat nemá. Řešení tohoto dilematu je však překvapivě jednoduché:
Všechny klasické odkazy na stránce musejí být nedestruktivní. Jestliže potřebujeme měnit/mazat data, je ten pravý čas použít formulář.
Komentáře
To se zdá být moudré řešení ;)
No to javascriptové potvrzení může být v pořádku, nijak to nekoliduje s mými doporučeními. Například tlačítko "smazat", vytvořené jako formulář s javascriptovým potvrzením při odeslání, se výrazně blíží ideálu, protože:
a) HTTracker ani jiný robot formulář neodešle, takže v tomto ohledu nic nehrozí
b) Klientům s javascriptem nabízíme komfort - potvrzovací dialog
c) Klientům bez JS nabízíme základní funkčnost bez komfortu (potvrzovací dialog chybí, ale tlačítko funguje)
ad [3]..
Díky za odkaz, zajímavý článek ;)
V druhom rade... súhlasím s ideou, že JS má slúžiť iba ako komfort navyše. :P