Anulowanie działania wskaźnika
Silktide wykrywa przyciski i linki, które działają w momencie ich naciśnięcia, zamiast po zwolnieniu nacisku. Działanie po zwolnieniu daje użytkownikom możliwość naprawienia pomyłki po naciśnięciu niewłaściwego elementu przez odsunięcie wskaźnika przed zwolnieniem.
Dlaczego to jest ważne
Każdy czasem naciska niewłaściwy przycisk, ale osoby z drżeniem rąk, ograniczoną sprawnością manualną lub słabym wzrokiem robią to znacznie częściej. Uniwersalnym gestem odzyskiwania kontroli jest przytrzymanie, przeciągnięcie poza kontrolkę i zwolnienie — działa on, ponieważ przyciski i linki zwykle reagują po zwolnieniu. Kontrolka skonfigurowana tak, aby reagowała na początkowe naciśnięcie, odbiera tę możliwość: działanie uruchamia się natychmiast, bez możliwości anulowania. W przypadku przycisku wysyłania formularza lub usuwania jeden błąd staje się nieodwracalną pomyłką.
To kryterium sukcesu 2.5.2 (Anulowanie działania wskaźnika), wymaganie — część najbardziej podstawowego poziomu zgodności.
Jak to naprawić
- Uruchamiaj działania ze zdarzenia
click, które występuje po zwolnieniu, zamiastmousedown,pointerdownlubtouchstart. - Jeśli kontrolka rzeczywiście musi reagować na początkowe naciśnięcie — na przykład klawisz pianina w aplikacji muzycznej — upewnij się, że zwolnienie poza kontrolką odwraca lub przerywa działanie, albo zapewnij możliwość cofnięcia.
- Jeśli oznaczony odbiornik zdarzeń nie uruchamia faktycznie działania (może jedynie dodawać wizualny efekt naciśnięcia), możesz wynik.
// Problem: uruchamia się natychmiast po naciśnięciu, nie można anulować
button.addEventListener('mousedown', submitForm);
// Poprawka: uruchamia się po zwolnieniu, więc przeciągnięcie poza element anuluje działanie
button.addEventListener('click', submitForm);
Jak Silktide to testuje
- Wczytuje każdą stronę w prawdziwej przeglądarce i rejestruje nasłuchiwacze zdarzeń , które ona rejestruje.
- Wyszukuje nasłuchiwacze zdarzeń naciśnięcia:
mousedown,pointerdownitouchstart. - Zgłasza nasłuchiwacz, gdy jest przypięty do kontrolki zwykle aktywowanej po
zwolnieniu: przycisku, linku, pola wejściowego wysyłania lub resetowania albo elementu z rolą
, taką jak
button,link,menuitem,tablubswitch. - Pomija nasłuchiwacze dla całej strony, które nie są przypięte do konkretnej kontrolki i zwykle dotyczą przewijania lub obsługi przeciągania i upuszczania, a nie aktywacji.
- Ponieważ Silktide nie może określić, co robi kod nasłuchiwacza, wyniki są oznaczane do potwierdzenia, zamiast być liczone jako potwierdzone błędy.
Rozwiązywanie problemów
Nasłuchiwacz niczego nie aktywuje
Nasłuchiwacze zdarzeń naciśnięcia są często używane do nieszkodliwych efektów: stylu naciśnięcia,
animacji fali lub zarządzania fokusem, podczas gdy rzeczywiste działanie nadal jest przypisane do click.
To spełnia kryterium; zatwierdź wynik.
Kontrolka jest suwakiem lub uchwytem do przeciągania
Suwaki, uchwyty do przeciągania i podobne widżety mogą zgodnie z przeznaczeniem śledzić początkowe naciśnięcie. WCAG uznaje zdarzenie naciśnięcia za niezbędne dla tych interakcji; zatwierdź wynik.