RSS: Vše - Programování



Odkazy a javascript

18. 03. 2008, 21:39:17,Programování,

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ář.

Autor: Pavel Šindelka

Komentáře


[1] (stuff) - 18. 03. 2008, 21:56:21
REST na věčné časy...
[2] (Petr Ocásek) - 19. 03. 2008, 08:39:43
Chápu-li to správně, tak Pavle navrhuješ, aby u "destruktivních" odkazů to potvrzení "Opravdu chcete YX? ANO/NE" .. nebylo přes pop-up JS (viz zde: http://www.web-wise-wizard....) ale v principu to samé jen formulářovým tlačítkem (které HTTracker neumí odeslat a uživatel s vypnutým JS nemůže obejít) ?

To se zdá být moudré řešení ;)
[3] (Pavel Růžička) - 19. 03. 2008, 16:45:18
Zde si musím přihřát svou polívčičku :)

http://interval.cz/clanky/o...
[4] (Pavel Šindelka) - 19. 03. 2008, 19:56:16
ad [2]..
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 ;)
[5] (Peter Kytlica) - 19. 04. 2008, 20:12:14
V prvom rade... nevidím žiadny dôvod na to, aby mal robot (alebo iný neautorizovaný návštevník stránky) právomoc meniť obsah (vôbec nie mazať). Samozrejme som postrehol, že úsmevná historka sa týka INTRAnetu, čo skôr u mňa vyvoláva výsmech (typu darwinova cena) toho človeka, ktorý HTTracker spustil.

V druhom rade... súhlasím s ideou, že JS má slúžiť iba ako komfort navyše. :P

Komentovat


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