- Poziom
- A
- Od wersji
- WCAG 2.1
2.1.4 Jednoznakowe skróty klawiaturowe
Skrót złożony z jednego klawisza litery, cyfry lub symbolu musi dać się wyłączyć albo przypisać na nowo, chyba że działa tylko wtedy, gdy fokus jest na jego kontrolce.
/ Czego wymaga
Niektóre aplikacje internetowe reagują na pojedyncze klawisze: j i k do przechodzenia między wiadomościami, e do archiwizacji, ukośnik do przejścia do wyszukiwarki, znak zapytania do pomocy. Szybkiemu użytkownikowi klawiatury to odpowiada, ale sterowanie głosem zamienia dyktowane słowa w ciągi liter i zdanie złapane przez mikrofon w złym momencie potrafi po kolei zarchiwizować, wyciszyć albo przewinąć kilka pozycji. Osoby z drżeniem rąk lub ograniczoną sprawnością dłoni także trafiają w przypadkowe klawisze. Kryterium wymaga, żeby takie skróty dało się wyłączyć albo zmienić.
Obejmuje skróty klawiaturowe zaimplementowane w treści wyłącznie za pomocą liter, wielkich lub małych, znaków interpunkcyjnych, cyfr albo symboli, także sekwencje, na przykład g, a po nim i. Musi być spełniony co najmniej jeden z trzech warunków: istnieje mechanizm wyłączenia skrótu, istnieje mechanizm przypisania go na nowo z klawiszem niedrukowalnym, takim jak Ctrl albo Alt, albo skrót należy do komponentu i działa tylko wtedy, gdy ten komponent ma fokus. Nie ma znaczenia, iloma fizycznymi klawiszami powstaje znak, więc znak zapytania wpisywany z klawiszem Shift też się liczy. Kryterium nie dotyczy wpisywania litery, by przeskoczyć w liście lub menu z fokusem, ani klawiszy dostępu, które przeglądarki zwykle uruchamiają z modyfikatorami.
/ Jak strony go nie spełniają
- Poczta w przeglądarce archiwizuje otwartą wiadomość klawiszem e i usuwa ją klawiszem # w dowolnym miejscu strony, a żadne ustawienie nie wyłącza skrótów.
- Odtwarzacz przełącza odtwarzanie i wyciszenie klawiszami k i m zawsze, gdy fokus jest na stronie, a nie tylko na odtwarzaczu.
- Naciśnięcie s albo ukośnika w dowolnym miejscu przenosi fokus do pola wyszukiwania i nic tego nie wyłącza.
- Strona pomocy wymienia skróty jednoklawiszowe, ale nie daje sposobu, by je zmienić albo wyłączyć.
- Obsługa keydown na document reaguje na pojedyncze litery zawsze, gdy fokus jest poza polem formularza, i nigdy nie sprawdza klawisza modyfikującego.
/ Jak sprawdzić samodzielnie
- Poszukaj w pomocy, ustawieniach i dokumentacji listy skrótów klawiaturowych. Testuj także wtedy, gdy jej nie ma.
- Kliknij w puste miejsce strony, żeby żadne pole formularza nie miało fokusu, a potem naciśnij po kolei każdą literę, cyfry i typowe znaki, takie jak ?, / i kropka. Pomiń własne funkcje przeglądarki, na przykład wyszukiwanie podczas pisania.
- Zanotuj każde działanie, które się uruchamia, i to, czy uruchamia się także wtedy, gdy powiązana kontrolka nie ma fokusu.
- Poszukaj ustawienia, które wyłącza skróty jednoznakowe albo przypisuje je na nowo z Ctrl, Alt lub innym modyfikatorem, i sprawdź, czy działa.
- W narzędziach deweloperskich Chrome zaznacz element html, otwórz zakładkę Event Listeners i poszukaj obsługi keydown, keypress i keyup podpiętej do document albo window.
/ Jak to naprawić
- Dodaj ustawienie, które wyłącza wszystkie skróty jednoklawiszowe, i zapamiętuj ten wybór między wizytami.
- Pozwól przypisać każdy skrót na nowo do kombinacji z Ctrl, Alt albo Meta.
- Podepnij obsługę keydown do samego komponentu, na przykład odtwarzacza albo siatki, a nie do document, żeby skrót działał tylko wtedy, gdy ten komponent ma fokus.
- Domyślnie wymagaj modyfikatora: zanim obsługa zadziała, sprawdź event.ctrlKey, event.altKey albo event.metaKey.
- W każdym wariancie ignoruj naciśnięcia, których celem jest input, textarea, select albo element z contenteditable, żeby pisanie lub dyktowanie do pola nigdy nie uruchamiało polecenia.
/ Co sprawdza nasz skaner
W naszym skanie nic nie zgłasza błędów pod 2.1.4. Skróty siedzą w obsłudze keydown w skryptach, a skan ani nie czyta tego kodu, ani nie wpisuje liter na stronie, żeby zobaczyć, co się uruchomi. HTML_CodeSniffer podaje przy tym kryterium tylko przypomnienie, które jest pomijane. Audyt ręczny naciska pojedyncze klawisze z fokusem poza polami formularza i szuka w ustawieniach sposobu na wyłączenie albo zmianę skrótów.
/ Kto je łamie, według naszych pomiarów
Cotygodniowy indeks nie ma danych dla tego kryterium, bo żaden test uruchamiany przez skan witryny go nie sprawdza. Ocenia je człowiek i do tego służy audyt ręczny.
Jedna strona na podmiot, mierzona automatycznie w tygodniowym cyklu. Jeśli podmiot coś naprawił od ostatniego pomiaru, zmiana będzie widoczna przy następnym, a każdy podmiot może odpowiedzieć na swojej stronie.
/ Pytania o to kryterium
Czy skróty z Ctrl albo Alt podlegają kryterium 2.1.4?
Nie. Kryterium obejmuje skróty złożone wyłącznie ze znaków drukowalnych: liter, cyfr, znaków interpunkcyjnych i symboli. Skrót, który wymaga Ctrl, Alt albo innego klawisza niedrukowalnego, jest poza nim i dlatego przypisanie skrótu na nowo z takim klawiszem jest jednym ze sposobów na spełnienie kryterium.
W której wersji WCAG pojawiło się 2.1.4?
Jednoznakowe skróty klawiaturowe dodano w WCAG 2.1 na poziomie A i są częścią WCAG 2.2 na tym samym poziomie. Audyt wyłącznie według WCAG 2.0 ich nie obejmuje, a każdy audyt według 2.1 lub 2.2 na poziomie A albo AA tak.
Czy pojedyncze litery w widżecie z fokusem się liczą?
Nie, jeśli działają tylko wtedy, gdy ten widżet ma fokus. Wpisanie litery, by przeskoczyć do opcji w liście z fokusem, albo klawisz obsługiwany przez siatkę tylko wtedy, gdy ma fokus, spełnia trzeci warunek kryterium. Problemem jest skrót, który działa niezależnie od tego, gdzie akurat jest fokus.
