Přejít k navigační liště

Zdroják » JavaScript » Tak nám zpřístupnili JavaScript

Tak nám zpřístupnili JavaScript

JavaScript byl dlouhá léta považován ze nepřístupnou technologii. Jeho přítomnost na webové stránce byla řadou expertů chápána za cosi špatného. Dnes je situace jiná a JavaScript nemusí nutně znamenat problém v přístupnosti. Navíc tento fakt brzy oficiálně posvětí i W3C.

Dnešní článek patří do rubriky Subjektivně. Jejím cílem je poskytovat našim redaktorům i českým odborníkům prostor pro jejich názory a pohledy na aktuální dění v oblasti webových technologií i na jeho vývoj do budoucna. Jedná se o osobní názory, které se nemusí vždy shodovat s názory redakce. Pokud máte co říct k aktuálnímu dění, pojďte k nám psát Subjektivně.

„Tak nám zpřístupnili JavaScript, paní Müllerová,“ řekl by švejkovsky pozitivní webdesigner a sundal ze stěny své kanceláře velkou ceduli s nápisem „JavaScript = NEPŘÍSTUPNO“. Podobná pomyslná cedule visí dnes na stěnách pracoven řady webdesignerů. Zatím ji tam ještě můžete nechat viset, ale nespíš již za několik týdnů (maximálně ale měsíců) ji prosím s klidným svědomím zase sundejte.

JavaScript se za ty roky sice výrazně nezměnil, ale zlepšily se asistivní technologie, které postižení uživatelé používají. Nevidomý uživatel používající odečítač obrazovky (screen reader) se příliš nestará, zda na stránce JavaScript je nebo není. Stránku mu totiž v nejednom případě odečítač obrazovky v pořádku přečte (o tom, že tomu tak není vždy, si ještě povíme dále). Je tedy JavaScript skutečně nepřístupný?

W3C za JavaScript nepřístupný

Specifikace WCAG verze 1.0 (WCAG = Web Content Accessibility Guidelines) JavaScript za nepřístupný považuje. Z pohledu této specifikace W3C pak (více nebo méně) vychází právní předpisy v jednotlivých státech (včetně předpisu platného u nás), které stanovují závazná pravidla přístupnosti.

Specifikace WCAG 1.0 konkrétně v pravidle 6. tvrdí Ensure that pages featuring new technologies transform gracefully. Velmi volně bychom to mohli přeložit jako: Zajistěte, aby nové technologie použité ve stránkách zbytečně neomezovaly jejich funkčnost. Což je dále rozvedeno jako Ensure that pages are usable when scripts, applets, or other programmatic objects are turned off or not supported. neboli Zajistěte, aby stránky byly použitelné, i když budou skripty, applety a další programovací objekty vypnuté nebo nepodporované.

Zmíněné pravidlo tvrdí to, co měl náš švejkovský webdesigner na své ceduli, čili „JavaScript = NEPŘÍSTUPNO“. A pravidlo to bylo jistě moudré. Specifikace WCAG 1.0 byla oficiálně zveřejněna v roce 1999 a pro asistivní technologie JavaScript mohl být problém. Tehdy!

Nová WCAG mění pohled

Po devíti letech ovšem už nelze tvrdit totéž. Vyvinul se jak Web (je dnes samý AJAX a RIA, které na JavaScriptu závisí), tak asistivní technologie. Na to pamatuje i vznikající druhá verze specifikace WCAG, která je nyní ve stavu Proposed Recommendation a pokud se neobjeví nečekané komplikace, mohla by vyjít během několika týdnů, maximálně měsíců, a nahradit tak stávající WCAG 1.0.

Místo původního pravidla najdeme pravidlo nové, které zní: Maximize compatibility with current and future user agents, including assistive technologies čili Zajistěte maximální kompatibilitu se stávajícími a budoucími prohlížeči včetně asistivních technologií.

Všimněte si, že zatímco WCAG 1.0 byla spíše konzervativní, nová WCAG 2.0 je střízlivě progresivní. Nestanovuje jasnou mez, co je přístupné a co nikoliv, důležitý je pro ni aktuální stav prohlížečů a asistivních technologií (a všimněte si, že zdůrazňuje i pohled do budoucnosti). Tím specifikace získává i jistou nadčasovost.

Co to pro nás znamená?

Krom toho, že byste měli přestat věřit dnes již starým pověrám o nepřístupnosti JavaScriptu, tak po právní stránce to pro vás zatím neznamená nic. Pokud vytváříte weby pro státní správu, musíte se i nadále řídit platnými Českými pravidly přístupnosti, která k JavaScriptu mají odmítavý postoj (to může být změněno novelizací, ale jistě ne hned).

Pokud nejste vázáni vyhláškou, ale přístupnost vašich webů vás zajímá, tak je důležité si uvědomit smutnou pravdu. Tím, že bude JavaScript zlegalizován se situace webdesignerovi nezjednoduší, ale naopak zkomplikuje. Ve světě, který byl dřív rozdělen na černou a bílou s ostrou hranicí mezi nimi (černá = nepřístupná stránka používající JavaScript, bílá = přístupná stránka nepoužívající JavaScript) se objevil široký pruh nejasné šedé (stránek, které JavaScript používají, ale my nevíme, zda jsou nebo nejsou přístupné). Připomeňme si totiž, co přesně říká specifikace. WCAG 2.0 netvrdí, že JavaScript je přístupný, ale že přístupné je pouze to, co funguje v prohlížečích a asistivních technologiích.

Nezbývá, než se ptát: Existuje tedy JavaScript, který v nich nefunguje správně a je stále nepřístupný?

JavaScript přístupný a nepřístupný

Odpověď většinu webdesignerů a vývojářů nepotěší: Ano, některý kód v JavaScriptu přístupný je, jiný není. To zní stejně špatně, jako bychom řekli, že v pondělí JavaScript přístupný je a v úterý zase není. Ale je to tak. Neexistuje navíc žádný validátor, žádný definitivní předpis, pomocí kterého byste mohli snadno rozhodnout, co přístupné je a co není.

Jedinou spolehlivou metodou je testování. Oč měli vývojáři situaci snazší, když byl JavaScript kompletně nepřístupný. Vývojáři, kteří si nechtějí život komplikovat, pořád můžou nabízet stránky plně funkční i bez JavaScriptu (dříve to byla povinnost, teď to bude už jen volba).

JavaScript nepřístupný

Pokusme se v oné šedé zóně JavaScriptu alespoň trochu zorientovat a naznačit, které jeho části jsou nepřístupné.

Podle studie JavaScript and screen readers, kterou nedávno vytvořili Aaron Cannon a Aaron Barker nemusí odečítače obrazovky správně detekovat všechny javascriptové události. Záleží, jak byly registrovány. Pokud je např. událost click registrována starším způsobem (nastavením atributu onclick nebo vlastnosti element.onclick), pak odečítač obrazovky nevidomého uživatele správně upozorní, že se nachází na značce, se kterou může interagovat (týká se případu, kdy nastavujeme událost neinteraktivním elementům jako jsou <div>, <span>, <p> apod., na odkazy <a> je uživatel upozorněn automaticky), pokud ovšem registrujeme událost přes addEventListener nebo attachEvent, uživatel upozorněn nebude. Událost dblclick není odečítači obrazovky hlášena vůbec a není ji ani snadné vyvolat.

WCAG 2.0 se snaží v pomocném dokumentu Client-side Scripting Techniques for WCAG 2.0 poskytnut vývojářům základní doporučení. V nich se např. dozvíte, že by obsah stránky neměl být měněn pomocí document.write() nebo element.innerHTML, ale pomocí metod DOMu.

Z popisu vidíme, že řada javascriptového kódu, který dnes na webu najdeme (včetně používaných frameworků), pravděpodobně přístupná nebude.

Tím není řečeno poslední slovo. Javascriptové frameworky se vyvíjí a některé možná mohou na problematiku přístupnosti zareagovat (byť autorovi článku zatím není známo, že by tak některý framework činil) a vyvíjí se i asistivní technologie. To, co je dnes problém, nemusí být problémem v další verzi softwaru.

JavaScript a AJAX ještě přístupnější

Vývoj v oblasti přístupnosti jde dokonce tak daleko, že plánuje zpřístupnit i webové rich aplikace (RIA), které používají AJAX. To má na starosti připravovaná specifikace WAI-ARIA (Accessible Rich Internet Applications). Zatím s ní ale nemůžeme počítat. Ačkoliv ji některé nové verze odečítačů obrazovky začínají podporovat, běžně rozšířené verze dosud ARIA neumí.

Závěr

Důležité je si uvědomit, kterým směrem se přístupnost ubírá. Spoléhání se na přítomnost JavaScriptu již samo o sobě nemusí být v rozporu s přístupností (byť český zákon to ještě nějaký čas bude za rozpor považovat). Každopádně pamatujme, že velká část dnes běžně používaného javascriptového kódu přístupná není. Pokud se časem vývojáři naučí psát přístupný JavaScript (nebo pokud jej začnou podporovat samotné frameworky), tak se postižení uživatelé webu časem dočkají dalších aplikací, které jsou pro ně zatím ještě nepřístupné.

Jedinými uživateli, pro které JavaScript zůstává problémem, jsou – paradoxně – roboti, kteří indexují obsah pro vyhledávače.

Vítáte oficiální zpřístupnění JavaScriptu?

Komentáře

Subscribe
Upozornit na
guest
11 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
Sten

Za document.write bych občas odřezával optické kabely, např. Mapy.cz API nebo Google Maps API tím dokonale znemožňují použití ve validním XHTML ve striktních prohlížečích.

...

Zoberieme jedneho "web dizajnera", ktory doteraz fungoval len na html, naucime ho javascript a nechame ho pracovat.
Preco sa trapit s nejakymi sablonami/templatmi pre oddelenie logiky od vzhladu, ked mozme napisat server-side kod (cosi v zmysle "echo "moj javascript kod";), ktory generuje javascript, ktory generuje html a mame to vsetko tak pekne "konzistentne".

Anonymní

web kterej nefunguje bez scriptu je web nahowno a zustane to tak at uz si schvali kdo chce co chce. Tim nerikam, ze scriptovani je spatny, jen to, ze web, pokud je kvalitne udelan, musi poskytnout veskerou funkcionalitu i s vypnutym scriptovanim (a ne debilni hlaska typu "nemate povolen javascript = mate smulu").

karf

Máte naprostou pravdu. Třeba takové mapy.cz – web úplně na hovno. Nepoužívejte ho ;)

onge

Existuje cosi jako funkcni degradace (pro manazery pozitivne nazyvana "progresive enhancement"). Jinymi slovy, zachovani funkcnosti bez javascriptu JE v jistem smyslu best practice, podobne jako vytvareni validni (X)HTML.

Je dulezite si uvedomit, ze se nemusi jednat o plnou funkcnost, ale o minimalni funkcnost. Napr. mapy by mohli zobrazovat vyrez mapy bez moznosti posouvani, bez javascriptu uplne bez problemu. Ale jelikoz si mapy nelamou hlavu ani s validnim HTML, tak chtit po nich tohle by bylo opravdu moc:)

Takze ja netvrdim, ze web, co nefunguje bez javascriptu je na hovno, tvrdim, ze dobre udelany web funguje bez javascriptu (a to je fakt, ktery lze tezko vyvratit)

Sten

Ale jelikoz si mapy nelamou hlavu ani s validnim HTML, tak chtit po nich tohle by bylo opravdu moc:)

Ale není

petr_p

Až na to, že před příchodem AJAXu, takto vypadaly webové mapové služby i pro pracovní stanice. Dnes se na starou službu přilepí nová doména a můžeme se chlubit, jak jsme pokrokoví.

Problém je, že tohle není odstupňovaná služba. Vypněte si javascript a vlezte na http://www.mapy.cz/. Na místo rady, že podobnou službu ale funční můžete najít na http://wap.mapy.cz/, na vás vybafne červená chybová hláška: Pro správnou funkčnost aplikace je vyžadován zapnutý javascript ve vašem prohlížeči a konec.

petr_p

Jak bychom mohli chtít po tvůrcích webových stránek, aby opustili hrůzostrašné techniky typu document.write(), když ani nejsou schopni při předepsání barvy popředí zároveň dodefinovat barvu pozadí.

Zkuste si nastavit jako implicitní barvy bílou na černé a projděte se po webu. Neuvěříte svým očím (doslova).

Sten

Zkuste si nastavit jako implicitní barvy bílou na černé a projděte se po webu. Neuvěříte svým očím (doslova).

Měl jsem (bílá na černé je na CRT pro oči šetrnější) a největší problém byly extrémně kontrastní obrázky, hlavně u obrázkových menu. Pokud je (pře)definována barva popředí a není definována barva pozadí, je to často čitelné i na černém pozadí (něco jiného by bylo pozadí s barvou podobnou barvě popředí).

Btw. svým očím nevěřím často ani při zachování černé na bílé :)

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.