Przejdź do treści
SilktidePomoc

Po otrzymaniu fokusu

Samo przejście do elementu, na przykład przez naciśnięcie klawisza Tab, nigdy nie powinno wywoływać istotnej zmiany, takiej jak wczytanie nowej strony, wysłanie formularza lub otwarcie wyskakującego okna.

To jest : automatyzacja nie potrafi wiarygodnie ustalić na podstawie zminifikowanego kodu JavaScript lub kodu frameworka, czy obsługa fokusu zmienia kontekst, dlatego Silktide wyświetla prompt na każdej stronie, a osoba potwierdza go, przechodząc po niej klawiszem Tab.

Dlaczego to ważne

Użytkownicy klawiatury przemieszczają fokus po stronie, aby ją przeglądać, tak jak użytkownicy myszy przemieszczają wskaźnik — dotarcie do kontrolki nie jest tym samym co wybór jej użycia. Jeśli samo przejście klawiszem Tab do pola wyszukiwania ponownie wczytuje stronę albo dotarcie do przycisku otwiera okno dialogowe, użytkownicy klawiatury i zostają przeniesieni w miejsce, do którego nie chcieli przejść, często tracąc swoje miejsce i wykonaną pracę. Osoby z niepełnosprawnościami ruchowymi, które nawigują powoli, element po elemencie, stale napotykają takie pułapki.

To kryterium sukcesu 3.2.1 (Po otrzymaniu fokusu), wymaganie — część najbardziej podstawowego poziomu zgodności.

Co sprawdzić

  1. Przejdź klawiszem Tab przez każdą kontrolkę, która może otrzymać fokus, na stronie.
  2. Potwierdź, że sam fokus nigdy nie powoduje nawigacji, wysłania formularza ani otwarcia okna dialogowego lub nowego okna.
  3. Obsługa fokusu, która jedynie wyróżnia pole, wyświetla wskazówkę lub przygotowuje dane w tle, jest w porządku.

Jeśli fokus nigdy nie zmienia kontekstu, ustalenie.

Jak to naprawić

  1. Przenieś działanie poza obsługę fokusu. Nawigacja, wysyłanie formularza i okna dialogowe powinny być wywoływane przez wyraźne działanie, takie jak click, Enter lub zmiana potwierdzona przez odwiedzającego.
  2. Używaj obsługi fokusu tylko do efektów, które nie zakłócają działania.
// Problem: przejście do pola powoduje natychmiastową nawigację
searchBox.addEventListener('focus', () => {
  window.location.href = '/search';
});

// Poprawka: nawiguj tylko wtedy, gdy użytkownik zdecyduje się działać
searchBox.addEventListener('keydown', (event) => {
  if (event.key === 'Enter') {
    window.location.href = '/search';
  }
});

Jak Silktide to testuje

Silktide nie może wiarygodnie wykrywać zmian kontekstu wywoływanych fokusem przez analizę kodu źródłowego nasłuchiwaczy — frameworki i minifikacja czynią to zawodne — dlatego ta kontrola wyświetla po jednym prompcie weryfikacyjnym na stronę, opisującym, co należy sprawdzić za pomocą klawisza Tab.

Dowiedz się więcej

Ostatnio zaktualizowano

Czy ta strona była pomocna?