Etykietowanie za pomocą atrybutu title
Silktide sprawdza przyciski i linki na Twoich stronach pod kątem kontrolek, które polegają
na atrybucie title, aby wyjaśnić swoje działanie. Przeglądarki wyświetlają title tylko
jako opóźnioną podpowiedź po najechaniu wskaźnikiem myszy na element, dlatego większość
osób nigdy go nie widzi.
<!-- Problem: podpowiedź jest jedyną etykietą -->
<button title="Zamknij"><svg>…</svg></button>
<!-- Rozwiązanie: nadaj kontrolce prawdziwą nazwę dostępną -->
<button aria-label="Zamknij"><svg>…</svg></button>
Dlaczego to jest ważne
Podpowiedź title pojawia się tylko dla użytkowników myszy i dopiero po chwili.
Użytkownicy klawiatury, ekranów dotykowych i urządzeń mobilnych oraz większość
użytkowników nigdy jej nie otrzymuje, więc
kontrolka opisana wyłącznie przez title jest tajemniczym przyciskiem dla dużej części
Twoich odwiedzających. Czytniki ekranu również obsługują title niespójnie — niektóre go
odczytują, inne ignorują — co czyni go niewiarygodnym nawet dla użytkowników, którym
teoretycznie ma służyć.
Gdy kontrolka ma zarówno title, jak i inną ,
problemem jest spójność: użytkownik myszy przez chwilę widzi jeden opis, podczas gdy
użytkownik technologii asystującej słyszy inny, a w miarę utrzymywania strony różnice
między nimi się pogłębiają.
Jak to naprawić
- Nadaj kontrolce właściwą etykietę: widoczny tekst, jeśli to możliwe, albo
aria-label(lubaria-labelledbywskazujący istniejący tekst) dla kontrolek zawierających wyłącznie ikonę. - Jeśli kontrolka ma zarówno
title, jak iaria-label, które się różnią, wybierz bardziej użyteczne sformułowanie i używaj go wszędzie. Zwykle najczystszym rozwiązaniem jest usunięcietitlei pozostawieniearia-labeljako opisu. - Zachowaj
titlewyłącznie dla rzeczywiście dodatkowych szczegółów. Nigdy nie może to być jedyny sposób, aby dowiedzieć się, co robi kontrolka.
Jak Silktide to testuje
- Znajduje widoczne przyciski, linki i kontrolki rozwijania na każdej stronie,
w tym elementy z
role="button"lubrole="link". - Dla każdej kontrolki z nietrywialnym atrybutem
titlesprawdza, czy ma inne etykietowanie: widoczny tekst, obrazu,aria-labellubaria-labelledby. - Zgłasza kontrolki, których jedyną etykietą jest atrybut
title. - Gdy kontrolka ma zarówno
title, jak i jawnearia-labellubaria-labelledby, porównuje te wartości i zgłasza je, gdy znaczą zasadniczo różne rzeczy. Jeśli jedna wartość jedynie rozszerza drugą (title„Szukaj” i nazwa „Szukaj teraz”), nie jest to zgłaszane.
Pola formularza, takie jak <input> i <select>, nie są testowane przez tę kontrolę;
jih etykietowanie obejmują etykiety kontrolek formularza.
Rozwiązywanie problemów
Atrybut title jest wymagany w elementach iframe
To prawda — title w elemencie <iframe> jest standardowym sposobem nadania mu nazwy,
a ta kontrola nie testuje elementów iframe. Testuje wyłącznie interaktywne kontrolki,
takie jak przyciski i linki.
Moja podpowiedź zawiera przydatne dodatkowe informacje
To uzasadnione zastosowanie, o ile kontrolka ma również prawdziwą etykietę. Ta kontrola
zgłasza tylko kontrolki, w których title jest jedyną etykietą albo jest sprzeczny z
nazwą dostępną.