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?

Vystudoval jsem biochemii. Vymyslel jsem a založil Zdroják. Jsem vyhlášeným expertem na likvidaci komentářů. Nejsem váš hodný tatínek, který vás bude brát za ručičku, já jsem zlý moderátor diskusí. Smiřte se s tím!

Věděli jste, že nám můžete zasílat zprávičky? (Jen pro přihlášené.)

Komentáře: 10

Přehled komentářů

Sten DOM místo document.write
... javascript - alebo ako generovat stranky co najmenej efektivne
Anonymní scripty
karf Re: scripty
onge Re: scripty
Sten Re: scripty
petr_p Re: scripty
Martin Hassman Re: scripty
petr_p Přístupnost nikoho nezjímá
Sten Re: Přístupnost nikoho nezjímá
Zdroj: http://www.zdrojak.cz/?p=2873