Poziom
A
Od wersji
WCAG 2.1
/ Kryterium WCAG

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

  1. Poszukaj w pomocy, ustawieniach i dokumentacji listy skrótów klawiaturowych. Testuj także wtedy, gdy jej nie ma.
  2. 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.
  3. Zanotuj każde działanie, które się uruchamia, i to, czy uruchamia się także wtedy, gdy powiązana kontrolka nie ma fokusu.
  4. 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.
  5. 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.