Blog

Dostępność: zejdźmy na ziemię

Ostatnio znajomy został zaprzęgnięty do procesu wyboru tematu na kolejny wpis na niniejszym blogu. Od dłuższego czasu nosiłem się z zamiarem napisania kilku akapitów na temat dostępności, co zostało skomentowane przez niego: accessibility nie jest ciekawym tematem. Trudno o lepszą motywację, stąd dzisiejszy wpis.

Gdyby sądzić po szumie generowanym przez blogosferę, faktycznie można odnieść wrażenie, że temat został już wyczerpany, masy deweleperów doskonale wyuczone, a klienci nie mogą się doczekać, by zainwestować pieniądze w poprawę dostępności swoich stron. Niestety, chociaż ten pogląd może się niektórym wydać szokujący, świat nie kończy się na blogach.

Przygotowując się do napisania tego tekstu, przyjrzałem się czterem największym polskim portalom. Oczywiście nie była to żadna metodyczna analiza. Po prostu chciałem sprawdzić, czy serwisy te spełniają najbardziej podstawowe wymagania, które umożliwiłyby korzystanie z nich przez osoby nie w pełni sprawne. Test nie zajął mi wiele czasu – w każdym przypadku wystarczyło zaledwie kilka minut, by utknąć na funkcji nieprzystosowanej dla osób korzystających z ułatwień dostępu. W tym momencie trudno jest oprzeć się wrażeniu, że snucie rozważań o optymalnych sposobach zapisu skrótowców czy niuansach aplikacji ajaksowych ma się nijak do rzeczywistości. Oczywiście należy o tym pisać i dyskutować, ale będzie to ciągle głos wołający na puszczy. Póki co zejdźmy na ziemię. Polską ziemię.

Gazeta.pl

Tu sprawa jest najprostsza. Wyłączenie JavaScriptu wystarczy, aby ze strony nie dało się korzystać. Nawet najbardziej podstawowa funkcja każdego portalu, to znaczy wyszukiwarka, nie jest pokazywana, gdy w przeglądarce wyłączono obsługę skryptów. Gazeta.pl używa zakładek do prezentacji różnych obszarów wyszukiwania. Jest to dość powszechnie używany sposób, ale jeżeli za zakładkami nie kryją się prawdziwe odnośniki, a jedynie odwołania do funkcji JS, cały mechanizm staje się niedostępny dla użytkowników, którzy z różnych przyczyn nie mogą używać skryptów. Wyszukiwarka prezentuje się wówczas następująco:

Wyszukiwarka na Gazeta.pl po wyłączeniu JavaScriptu

Portal konsekwentnie używa JS również do otwierania nowych okienek z obrazkami o pełnych rozmiarach. Ta cecha jest irytująca nie tylko dla niepełnosprawnych użytkowników, którzy korzystają ze specjalnych ułatwień — dla nich obrazek może być zupełnie niedostępny. Używanie skryptów łamie również najbardziej podstawowe zasady użyteczności dotyczące wszystkich korzystających z sieci. Ludzi przyzwyczajonych do samodzielnego łączy w nowych oknach (np. za pomocą kombinacji Shif+kliknięcie w Internet Explorerze) spotka przykra niespodzianka, ponieważ taka próba zakończy się komunikatem o błędzie.

Fotografie na Gazeta.pl są prezentowane w spósób naruszający zarówno zasady dostępności, jak i użyteczności.

Na plus należy zaliczyć używanie atrybutu alt do opisu treści powiększanych fotografii. Ale nawet tu nie obyło się bez zgrzytów: w środku opisów można znaleźć niedopuszczalne tu znaczniki HTML-owe <br>. Treść atrybutu alt jest potem zduplikowana w tekście za obrazkiem, zatem zostanie wypowiedziana dwukrotnie przez urządzenia czytające treść z ekranu. Wreszcie gros obrazków jest całkowicie pozbawiony tego atrybutu, co ma bardzo przykre konsekwencje dla osób korzystających ze wspomnianych urządzeń.

Onet

Odkąd pamiętam, Onet zawsze był chłopcem do bicia dla użytkowników przeglądarek innych niż Jedynie Słuszna. Tym bardziej mile zaskoczyło mnie, że menu z zakładkami dające dostęp do wyszukiwania zaawansowanego, analogiczne do użytego na Gazeta.pl, działa bez JavaScriptu. Pod każdą zakładką kryje się znacznik <a>, więc gdy dynamiczne przełączanie się między nimi nie jest możliwe, zakładki zachowują się jak normalne odnośniki. Jest to właściwy sposób tworzenia tego rodzaju menu.

Właściwie zrealizowane zakładki wyszukiwarki Onetu

Niestety, wygląda to raczej na wypadek przy pracy niż świadome ułatwianie życia użytkownikom. Kliknięcie na odnośnik do wyszukiwarki Polskich Książek Telefonicznych prowadzi do strony zawierającej zbliżony formularz. Dostęp do wyszukiwania zaawansowanego jest tu jednak niemożliwy dla użytkownika przeglądarki z wyłącznym JavaScriptem.

Niedostępna wyszukiwarka Polskich Książek Telefonicznych

Problematyczne jest również korzystanie z pasażu handlowego. Usługa została zrealizowana za pomocą strony z ramkami: jedna z nich zawiera witrynę sklepu współpracującego z portalem, a druga pasek nawigacyjny Onetu. Ramki nie posiadają tytułów, co utrudnia zorientowanie się w ich zawartości. O ile zawartość strony sklepu nie jest zależna od Onetu, to treść ramki nawigacyjnej jest już w gestii portalu.

Ramka nawigacyjna w pasażu handlowym Onetu

Niestety, nawigacja za jej pomocą jest niemożliwa bez obsługi JavaScriptu. Zamiast prawdziwych linków znajdują się tu wyłącznie odwołania do funkcji JS. Nawet wyszukiwarka nie jest dostępna bez JS — zamiast przycisku wysłania formularza zawiera link do adresu generowanego za pomocą skryptu.

Obrazki nie posiadają atrybtu alt ani zrozumiałych nazw, w związku z czym program czytający treść wymówi zlepek tekstu w rodzaju:

b podkreślenie ok kropka gif

Interia

Nie jestem stałym bywalcem polskich portali, więc bardzo zaskoczyło mnie to, co znalazłem, zaglądając do kodu źródłowego Interii. Okazało się, że jest to zupełnie poprawny, oparty na semantycznych elementach XHTML 1.1. Interia już zupełnie zbiła mnie z tropu i zniszczyła koncepcję tego krytycznego tekstu, gdy przeszła walidację!

W kodzie można znaleźć też elementy stworzone specjalnie z myślą o użytkownikach niepełnosprawnych. Na przykład pola formularzy posiadają czytelne etykiety. Tam, gdzie są one zbędne użytkownikom ze sprawnym wzrokiem (znaczenie pól można łatwo wywnioskować z kontekstu), zostały ukryte za pomocą CSS. Jednak ich treść jest ciągle dostępna dla urządzeń czytających treść. Pamiętano także o linku do przeskoczenia nawigacji.

Jednak i tutaj zachwyt nie trwa długo. Wystarczy wejść na którąś z podstron i szybko znajdziemy utrudnienia dobrze znane z innych portali. Na przykład strona z aktualnymi wiadomościami wygląda jak wygenerowana przez inny system zarządzania treścią. Po semantycznym XHTML-u nie zostało śladu, JavaScript służy do otwierania nowych okien, a pola formularzy są pozbawione etykiet.

Strona główna pokazuje, że nawet w tak dużym serwisie można zadbać o dostępność. Mam nadzieję, że to tylko początek i podstrony będą sukcesywnie dostosowywane do współczesnych standardów.

Wirtualna Polska

Jak być może pamiętają niektórzy, pierwszym portalem, który przeszedł na XHTML, była WP. Pamiętam, że towarzyszyły temu zachwyty, że oto mamy do czynienia z przełomem, gdyż jeden z wiodących polskich portali “przechodzi na standardy”. Faktycznie, strona główna i kilka innych ważniejszych części portalu waliduje się jako XHTML 1.0 Transitional. Zgodność ze specyfikacją to jednak nie to samo co dostępność.

Wyszukiwarka na stronie głównej może być obsługiwana z wyłączoną obsługą skryptów, ale dostęp do jej zaawansownych opcji nie jest możliwy, ponieważ są one skutecznie ukryte za odwołaniami do funkcji JS, podobnie jak na Gazeta.pl.

Trudno również mówić o dostępności, gdy inna podstawowa funkcja, poczta elektroniczna, jest praktycznie poza zasięgiem ludzi używających programów czytających treść. Ktoś, kto chciałby założyć nowe konto, napotka na stronę, na której dostępu do szczegółów broni odnośnik bez tytułu i z treścią w postaci obrazka bez atrybutu alt. Innymi słowy: poprawne wybranie linka do założenia nowego konta graniczy z cudem.

Oprócz wymienionych wyżej błędów, wszystkie cztery portale określały rozmiar tekstu w pikselach, co nie pozwala na powiększenie tekstu w przeglądarce używanej przez ponad 70% użytkowników. Ponieważ portale są z natury przeładowane treścią prezentowaną malutkimi czcionkami, jest to szczególnie kłopotliwe dla osób ze słabym wzrokiem, które z różnych przyczyn nie używają nowoczesnych przeglądarek takich jak Firefox czy Opera.

Powyższy przegląd jest bardzo powierzchowny. Na każdej z oglądanych stron ograniczyłem się do sprawdzenia tak podstawowej funkcjonalności, jak wyszukiwarka, poczta elektroniczna czy pasaż handlowy. Konkluzja jest bardzo przykra: świadomość problemów ludzi niepełnosprawnych jest praktycznie zerowa. Brakuje nawet tak prostych do zaimplementowania rzeczy, jak puste atrybuty alt dla obrazków pełniących funkcję prezentacyjną albo etykiety w polach formularzy. Ich nieobecność trudno nawet tłumaczyć złą wolą: myślę że chodzi przede wszystkim o brak świadomości problemu. Napisanie <label> zamiast <span> nie kosztuje przecież ani grosza więcej.

Pomijając główną stronę Interii, sporadycznie spotykane ułatwienia w rodzaju atrybutów alt czy właściwie skonstruowanych zakładek wyglądają raczej na wypadek przy pracy niż przemyślane działanie w duchu dostępności.

Dobrze, że powoli się to zmienia, o czym świadczą zmiany na Interii i WP. Myślę jednak, że na naprawdę znaczącą poprawę trzeba będzie poczekać jeszcze bardzo długo. Dlaczego? Do tematu wrócę w kolejnym wpisie. Obiecuję, że nie za dwa miesiące :).

Comments

  1. A czemu nie myślisz, że to wina standardów, że można pisać zły kod i nie da się napisać dobrej przeglądarki? Czemu np. z Rubym nie ma takiego problemu, że kompiluje się jedynie na kompilatorze autora programu a na innych nie?
    Według mnie odpowiedź jest prosta: bo nie wychodzi nowa wersja specyfikacji i nakładek na Rubiego co miesiąc! A W3C sieje standardami na lewo i prawo…
    Dlatego ten cały dzisiejszy Web jest skazany na porażkę, trzeba wszystko zburzyć i zbudować od nowa!

  2. To nie jest kwestia jakości standardów — jakie by one nie były, zawsze znajdzie się metoda na takie napisanie zgodnych z nimi stron albo programów, żeby były trudno dostępne nawet dla osób całkowicie sprawnych.

    I tak mamy nieczytelne captchas, tekst o stałym rozmiarze w pikselach, wymuszanie i przesadne wykorzystywanie JS, strony składające się w całości z animacji albo obrazków zawierających tekst, wymuszanie korzystania z myszki poprzez obsługę tylko zdarzeń klikalnych, a pomijanie zmian wartości np. list z klawiatury, blokowanie i/lub utrudnianie wykorzystania na stronie innych klawiszy myszki niż główny… listę można dowolnie przedłużać i tak będzie dla każdego zestawu standardów, które zapewniłyby tę funkcjonalność której oczekujemy od WWW.

    To problem ludzki, nie techniczny, więc nie da się go naprawić metodami technicznymi.

    Od strony technicznej można co najwyżej ponarzekać na (stopniowo malejące) różnice w zachowaniu przeglądarek. Analogia z Ruby jest niewłaściwa — “standard” tego języka jest wyznaczany przez jedyną implementację. Języki programowania, które mają wiele implementacji i przeszły przez procesy standaryzacyjne (np. C, C++, Lisp), mają podobny zestaw problemów.

  3. Podoba mi sie temat dostepnosci ogolnie, za to nie za bardzo czuje jednego elementu – tlumnego wjezdzania na javascript/ajax. Nie widze problemu aby tworcy przegladarek dla niepelnosprawnych zabrali sie za obsluge javascriptow, zwlaszcza ze jest na to dobry moment bo js wrocil do lask w pieknym stylu i raczej predko nie zniknie.
    Mam nadzieje ze moja analogia nie zostanie zle odebrana, ale w realnym swiecie np. robi sie windy i podjazdy a nie splaszcza budynki. Innymi slowy naciskajmy aby istnialy dobre narzedzia wspomagajace, bo swiat do lyzki sie wykrzywia tylko w matrixie.

  4. @Zalew. Nie było moim zamiarem “wjeżdzanie na JavaScript”, zwłaszcza, że jest to chyba mój ulubiony język. Z tym że można go wykorzystywać właściwie albo w sposób utrudniający życie użytkownikom. Przykładem mogą być różne podejścia do stworzenia menu z zakładkami, o czym pisałem wyżej: oba menu wykorzystują JS, ale jedno (to ze strony głównej Onetu) jest ładnie się degraduje i dostępne nawet po wyłączeniu skryptów.

    Zgadzam się, że przeglądarki dla niewidomych powinny obsługiwać skrypty (np. JAWS działa ponad IE i częściowo to robi), ale póki co warto zadbać, by treść była dostępna w możliwie dużym stopniu bez polegania na JS.

  5. tez nie popieram utrudniania zycia js’em, z wjezdzaniem bardziej chodzilo mi o ogolny oddzwiek w tej czesci blogosfery ktora podchodzi do ajaxu z bardzo duzym dystansem wlasnie przez kwestie usability u malego procenta userow (tych ktorzy nie sa w stanie tego obsluzyc z powodow technologicznych badz ‘wyznaniowych’).

    ogolnie mysle ze na przestrzeni ostatnich 2 lat development js rozwinal sie we wlasciwym kierunku i przy obecnych zasobach wiedzy i narzedzi mozna tworzyc rzeczy zarowno nowoczesne jak i wydajne i uzyteczne. tez mnie to boli ze duze portale przewaznie wykazuja sie zacofaniem, i slusznie ze wytknales bledy, niemniej trzeba pamietac ze duze serwisy informacyjne prawie nigdy nie uchodza za przyklady ani trendow ani wlasciwych nawykow jelsi chodzi o kod w przegladarce :) mimo ze powinny :/

    pzdr

  6. Ktoś, kto chciałby założyć nowe konto, napotka na stronę, na której dostępu do szczegółów broni odnośnik bez tytułu i z treścią w postaci obrazka bez atrybutu alt.

    Od jakiegoś czasu interesuje się tym problemem i jakoś nie mogę znaleść interesującego rozwiązania.

    Oczywiście nie można tam wstawić znacznika alt bo to mijało by się z celem. Robot bezproblemu by odczytał alta i to całe zabezpieczenie z obrazkiem nie zadziała.

    Masz może jakąś recepte jak to rozwiązać?

    Ja mam taki pomysł, że można dać linka do takiego samego obrazka, tylko o większych rozmiarach by osoby z różnymi wadami zwroku mogły to odczytać. Oczywiście tworząc takie obrazki trzeba mieć na uwadzę to – http://www.toledo-bend.com/colorblind/Ishihara.html

    To by załatwiało problem ludzi z wadą zwroku, ale co z tymi co w ogóle nie widzą?

  7. Pisałem o stronie z wyborem pakietów, gdzie zwykły przycisk “Załóż konto” jest pozbawiony atrybutu alt czy tytułu. Bynajmniej nie chodziło mi o coś w rodzaju CAPTCHA (odniosłem wrażenie, że Twój komentarz dotyczył właśnie tego), bo na tej stronie nie ma żadnego zabezpieczenia przed robotami.

    Jeśli interesuje Cię temat CAPTCHA, polecam stosowny dokument W3C, gdzie zaproponowano też kilka rozwiązań opisywanych przez Ciebie problemów.

  8. Pisałem o stronie z wyborem pakietów, gdzie zwykły przycisk “Załóż konto” jest pozbawiony atrybutu alt czy tytułu. Bynajmniej nie chodziło mi o coś w rodzaju CAPTCHA

    Byłem myślowo kilka kroków dalej. Nie pomyślałem nawet, że tak tragicznie jest strona wp.pl zrobiona…

    Dzięki za ciekawy link, jednak nie widzę tam zadowalającego rozwiąznia tego problemu.

Comments are now closed