Przejdź do treści
SilktidePomoc

Konfliktująca rola ARIA

Silktide sprawdza elementy deklarujące jawną rolę pod kątem znaczenia, które mają już w HTML. Zgłasza role niedozwolone dla danego elementu oraz role, które jedynie powtarzają znaczenie, jakie element już ma.

<!-- Problem: element nav nie może być przyciskiem -->
<nav role="button">…</nav>

<!-- Problem: rola jest zbędna, element nav już ją ma -->
<nav role="navigation">…</nav>

<!-- Poprawka: pozwól elementowi mówić samemu za siebie -->
<nav>…</nav>

Dlaczego to jest ważne

Każdy element ma wbudowane znaczenie, na którym polegają . Rola , która jest sprzeczna z tym znaczeniem, tworzy element wyglądający jak jedna rzecz, ale komunikujący się jako inna — użytkownik może usłyszeć „przycisk” w przypadku tego, co w rzeczywistości jest nawigacją witryny, i utracić punkt orientacyjny używany do poruszania się po stronie. Zbędne role są mniej szkodliwe, ale wprowadzają szum, sprzyjają przyszłym błędom i sygnalizują użycie ARIA tam, gdzie nie jest potrzebne.

Jak to naprawić

  1. W przypadku konfliktującej roli usuń ją albo zmień element na taki, który rzeczywiście ma znaczenie, jakiego potrzebujesz — jeśli ma działać jak przycisk, użyj <button>.
  2. W przypadku zbędnej roli, takiej jak <nav role="navigation"> lub <button role="button">, usuń atrybut roli. Element już sam udostępnia tę rolę.

Jak Silktide to testuje

  1. Znajduje każdy element na stronie z atrybutem role, pomijając role, które są nieznane lub abstrakcyjne (są one zgłaszane przez Nieprawidłowa rola ARIA).
  2. Porównuje rolę z kombinacjami dozwolonymi dla tego elementu przez specyfikację ARIA in HTML i zgłasza role, na które element nie zezwala.
  3. Zgłasza role, które powielają własną niejawną rolę elementu, z wyjątkiem role="list" w elementach <ul> i <ol> (zobacz poniżej).
  4. Gdy atrybut roli zawiera kilka ról, uwzględniana jest tylko pierwsza rozpoznana rola ARIA — ta sama, której używają przeglądarki. Nieznane słowa przed nią są pomijane.

Wyniki rozróżniają te dwa przypadki, dzięki czemu możesz nadawać konfliktom wyższy priorytet niż nadmiarowości.

Rozwiązywanie problemów

Zbędna rola jest potrzebna dla starszych przeglądarek

Jawne role punktów orientacyjnych, takie jak role="navigation", były kiedyś zalecane jako zabezpieczenie dla starszych technologii asystujących. Obsługa natywnych elementów jest powszechna od lat, a powielona rola wymaga obecnie więcej utrzymania, niż daje korzyści. Usuń ją albo wynik, jeśli zasady wsparcia wymagają jej zachowania.

role="list" na liście nie jest zgłaszana

Safari z VoiceOver przestaje ogłaszać <ul> lub <ol> jako listę, gdy jej wypunktowanie zostanie usunięte za pomocą list-style: none. Dodanie role="list" przywraca listę, więc Silktide nie zgłasza tej roli jako zbędnej w tych elementach.

Dowiedz się więcej

Ostatnio zaktualizowano

Czy ta strona była pomocna?