2.1.2 Brak pułapki na klawiaturę (ang.) No Keyboard Trap
Spis treści
Istota i cel kryterium
Wytyczna ta stanowi absolutny fundament swobodnej nawigacji. Gwarantuje ona, że każda osoba korzystająca z interfejsu klawiatury może nie tylko wejść do dowolnego elementu interaktywnego, ale również bez przeszkód go opuścić. Realizacja tego kryterium eliminuje sytuacje, w których użytkownik zostaje „uwięziony” wewnątrz konkretnej sekcji strony (np. w oknie modalnym lub wtyczce społecznościowej) i nie może kontynuować przeglądania treści bez użycia myszy.
Zastosuj tę zasadę, aby zapewnić płynny przepływ fokus na całej stronie. Jeśli komponent wymaga niestandardowych klawiszy do wyjścia, Twoim obowiązkiem jest poinformowanie o tym użytkownika, zanim tam trafi.
Definicja w j. angielskim
Definicja dostępna pod adresem (link otworzy się w nowej karcie):
https://www.w3.org/WAI/WCAG22/quickref/#no-keyboard-trap
Definicja w j. polskim
Definicja dostępna pod adresem (link otworzy się w nowej karcie):
https://www.w3.org/Translations/WCAG21-pl/#bez-pu-apki-na-klawiature
Słownik pojęć
- Interfejs klawiatury (ang.) Keyboard Interface
-
–
Mechanizm używany przez oprogramowanie do odbierania danych wejściowych w postaci naciśnięć klawiszy. Co istotne, interfejs ten może być obsługiwany przez fizyczną klawiaturę, ale także przez oprogramowanie do rozpoznawania mowy, systemy (ang.) sip-and-puff czy klawiatury ekranowe.
- Fokus (ang.) focus
-
–
stan aktywnego wyróżnienia elementu interfejsu (takiego jak odnośnik, przycisk czy pole formularza), który wskazuje gotowość komponentu na przyjęcie akcji lub danych wprowadzanych przez użytkownika.
Wpływ na dostępność (Kogo wspierasz?)
- Osoby niewidome: Korzystają one z czytników ekranu (np. NVDA), które bazują na nawigacji klawiaturowej. Zablokowanie fokusu sprawia, że reszta serwisu staje się dla nich „niewidzialna”.
- Osoby z niepełnosprawnościami ruchowymi: Użytkownicy z drżeniem rąk lub ograniczoną precyzją ruchów używają specjalistycznych emulatorów klawiatury. Pułapka klawiaturowa uniemożliwia im jakąkolwiek dalszą interakcję ze stroną.
- Osoby słabowidzące: Często mają trudności ze śledzeniem małego kursora myszy na ekranie i preferują przewidywalną nawigację klawiszową.
- Użytkownicy z zaburzeniami poznawczymi: Nagła utrata kontroli nad nawigacją i brak jasnej drogi wyjścia powoduje dezorientację oraz silną frustrację.
- Osoby w sytuacjach tymczasowych: Każdy, kto korzysta z uszkodzonej myszy, (ang.) trackpadu lub po prostu preferuje szybkość pracy z klawiaturą, zyska na przewidywalności interfejsu.
Zasady wdrażania i wymagania techniczne
Aby spełnić kryterium 2.1.2, trzymaj się następujących reguł:
- Standardowe i niestandardowe metody wyjścia: W większości przypadków klawisze
TaborazShift + Tabmuszą umożliwiać sprawne wejście i wyjście z komponentu. KlawiszEscpowinien być domyślnym sposobem zamykania wszelkich nakładek. Jeśli do opuszczenia elementu wymagane jest coś więcej niż standardowe klawisze, użytkownik musi zostać wyraźnie o tym poinformowany przed wejściem w interakcję z danym komponentem. - Zarządzanie oknami modalnymi: Okna typu (ang.) Modal mogą celowo ograniczać fokus do swojej zawartości, ale muszą oferować klawiaturowy sposób na ich zamknięcie (np. klawisz
Esclub dostępny przycisk „Zamknij”), co przywróci fokus do miejsca, z którego otwarto okno. - Osadzone aplikacje i widżety: W przypadku umieszczenia na stronie zewnętrznych zasobów w
<iframe>(np. odtwarzaczy, gier lub map) upewnij się, że nie przechwytują one fokusu na stałe. Jeśli do opuszczenia takiego elementu potrzebna jest specyficzna kombinacja klawiszy (np.Ctrl + M), instrukcja ta musi być widoczna i dostępna cyfrowo jeszcze przed wejściem w interakcję z modułem.
Wyjątki i sytuacje szczególne
Wymóg ten nie posiada wyjątków co do samej możliwości wyjścia, natomiast dopuszcza stosowanie niestandardowych kombinacji klawiszy (np. Ctrl + M), ale wyłącznie pod warunkiem, że użytkownik zostanie wyraźnie poinstruowany o alternatywnej, skutecznej metodzie opuszczenia danego obszaru.
Przykłady implementacji
Najczęstsze błędy
- Brak obsługi klawisza
Esc: Projektowanie nakładek, których nie da się zamknąć bez użycia myszy. - Uwięzienie w
<iframe>: Brak zdefiniowanej metody wyjścia z osadzonej treści zewnętrznej. - Niejasne instrukcje: Brak informacji o niestandardowej metodzie wyjścia (np. konieczności użycia skrótu klawiszowego).
- Błędne pętle fokusu: Tworzenie skryptów, które po ostatnim elemencie w oknie modalnym „gubią” fokus zamiast wrócić na jego początek lub go zamknąć.
- Błędne zarządzanie fokusem po przeładowaniu: Dynamiczne zmiany treści, które sprawiają, że fokus zostaje uwięziony w nieistniejącym już elemencie.
- Ukryte przyciski zamknięcia: Nadawanie przyciskom „Zamknij” atrybutu
tabindex="-1"lub ich całkowite ukrywanie przed technologiami wspomagającymi. - F10: Występuje, gdy strona łączy różne technologie (np. (ang.) Java applets, (ang.) PDF, (ang.) Flash) w sposób, który więzi użytkownika wewnątrz jednego formatu, uniemożliwiając powrót do dokumentu nadrzędnego.
Najlepsze praktyki
- Stawiaj na natywny HTML: Wykorzystuj znacznik
<dialog>, który posiada wbudowane mechanizmy poprawnego zarządzania fokusem. - Wizualizuj aktywność: Zawsze zapewnij wyraźny wskaźnik fokus, aby użytkownik wiedział, gdzie się znajduje.
- Projektuj wzorcowo: Implementuj sprawdzone wzorce (ang.) WAI-ARIA Authoring Practices dla wszystkich niestandardowych komponentów.
- Testuj na wczesnym etapie: Regularne sprawdzanie nawigacji samą klawiaturą pozwala wykryć pułapki przed wdrożeniem skomplikowanej logiki.
Metody testowania
- Testowanie manualne: Odłóż mysz i sprawdź, czy możesz przejść przez wszystkie interaktywne elementy za pomocą klawiszy
TaborazShift + Tabi czy zawsze masz drogę wyjścia. - NVDA: Uruchom czytnik ekranu i zweryfikuj, czy słyszysz instrukcje dotyczące obsługi złożonych komponentów i wyjścia z nich.
- ANDI.js: Wykorzystaj moduł (ang.) „Tab Order”, aby sprawdzić, czy ścieżka nawigacji nie wpada w nieskończoną pętlę bez możliwości wyjścia.
- Narzędzie deweloperskie (ang.) Developer Tools: Sprawdź w drzewie DOM, czy skrypty obsługujące zdarzenia klawiatury (np.
onkeydown) nie blokują domyślnego zachowania przeglądarki w sposób uniemożliwiający nawigację.
Sprawdź swoją wiedzę
W linku poniżej znajduje się 5 interaktywnych elementów. Twoim zadaniem jest sprawdzenie, czy użytkownik klawiatury może swobodnie wejść i wyjść z każdego komponentu.
Jak to sprawdzić?
- Użyj klawisza
Tababy przejść do elementu. - Aktywuj element (przycisk, link, pole formularza).
- Spróbuj wyjść używając
Tab,Shift+TablubEsc. - Jeśli utkniesz i nie możesz wyjść klawiaturą – to pułapka!
Notatka: Zanim zajrzysz do rozwiązania, uruchom wybrane narzędzia testowe i zapisz swoje wnioski na kartce.
Proponowane narzędzia: Klawiatura ( Tab, Shift+Tab, Esc, Enter), Narzędzie deweloperskie (ang.) Developer Tools, NVDA, ANDI.js
Link: https://pdc.ambiscale.com/training/wcag-2-1-2/
#1 BŁĄD
Problem: Modal nie ma przycisku zamknięcia i nie obsługuje klawisza Escape. Fokus jest zamknięty wewnątrz (focus trap) bez możliwości wyjścia.
Dlaczego: Użytkownik klawiatury jest całkowicie uwięziony. Jedyny sposób na wyjście to odświeżenie strony (F5) lub użycie myszy.
Naprawa: Dodaj przycisk zamknięcia i obsługę klawisza Escape. Focus trap jest OK, ale musi być sposób na wyjście.
#2 DOBRZE
Dlaczego: Modal używa focus trap (fokus krąży po elementach wewnątrz), ale zapewnia dwa sposoby wyjścia:
- Przycisk zamknięcia (X)
- Klawisz
Escape
Po zamknięciu fokus wraca do przycisku otwierającego. Użytkownik ma pełną kontrolę.
#3 DOBRZE
Dlaczego: Pole formularza pokazuje komunikat o błędzie, ale nie blokuje klawisza Tab. Użytkownik może zdecydować, czy chce poprawić błąd teraz, czy wrócić do pola później. Ma swobodę nawigacji.
#4 BŁĄD
Problem: Pole blokuje klawisz Tab gdy wartość jest pusta.
Dlaczego: Użytkownik nie może wyjść z pola dopóki nie wpisze imienia. To pułapka – co jeśli użytkownik chce przerwać lub przejść do innego pola? Nie może kontynuować nawigacji.
Naprawa: Nie blokuj Tab. Pokazuj błędy, ale pozwól użytkownikowi na swobodną nawigację.
#5 BŁĄD
Problem: Widget blokuje klawisz Tab (i prawdopodobnie wszystkie inne klawisze).
Dlaczego: Użytkownik wchodzi do widgetu i nie może z niego wyjść klawiaturą. Brak instrukcji alternatywnej metody wyjścia (np. Escape). Klasyczna pułapka.
Naprawa: Jeśli widget używa własnej nawigacji (np. strzałek), nie blokuj Tab. Dodaj widoczną instrukcję jak wyjść lub obsłuż Escape.
Źródła
- Abou-Zahra S., Eggert E., Vanderheiden G. [i in.] (red.), „2.1.2 No Keyboard Trap Level A”, [w:] Web Content Accessibility Guidelines (WCAG) 2.2 Quick Reference, 2025, https://www.w3.org/WAI/WCAG22/quickref/#no-keyboard-trap [dostęp: 14.05.2026].
- Accessibility Guidelines Working Group Participants, „Understanding SC 2.1.2 No Keyboard Trap (Level A)”, [w:] WCAG 2.2 Understanding Docs, 2025, https://www.w3.org/WAI/WCAG22/Understanding/no-keyboard-trap.html [dostęp: 14.05.2026].
- Accessibility Guidelines Working Group Participants, „Technique F10: Failure of Success Criterion 2.1.2 and Conformance Requirement 5 due to combining multiple content formats in a way that traps users inside one format type”, [w:] Techniques for WCAG 2.2, 2025, https://www.w3.org/WAI/WCAG22/Techniques/failures/F10 [dostęp: 14.05.2026].
- World Wide Web Consortium (W3C), „Kryterium sukcesu 2.1.2 Bez pułapki na klawiaturę”, [w:] Web Content Accessibility Guidelines (WCAG) 2.1, tłum. Fundacja Instytut Rozwoju Regionalnego, 2021, https://www.w3.org/Translations/WCAG21-pl/#bez-pu-apki-na-klawiature [dostęp: 14.05.2026].
- DOCK sp. z o.o., WCAG 2.1.1: Klawiatura, https://wcag.dock.codes/pl/dokumentacja/wcag-212/ [dostęp: 14.05.2026].
- World Wide Web Consortium (W3C), ARIA Authoring Practices Guide (APG), https://www.w3.org/WAI/ARIA/apg/ [dostęp: 14.05.2026].
Dodatkowe linki
- W3C WCAG:
- Dokładna definicja: https://www.w3.org/WAI/WCAG22/quickref/#no-keyboard-trap
- Zrozumienie podpunktu: https://www.w3.org/WAI/WCAG22/Understanding/no-keyboard-trap.html