Stufe
A
Seit
WCAG 2.0
Einträge
128 / 193
/ WCAG-Kriterium

4.1.2 Name, Rolle, Wert

Jedes Bedienelement braucht einen Namen und eine Rolle im Markup, sonst kann assistive Technologie nicht sagen, was es ist.

/ Was es verlangt

Assistive Technologie schaut nicht auf den Bildschirm. Sie fragt den Browser, wie jedes Bedienelement heißt, was für ein Bedienelement es ist und in welchem Zustand es sich befindet. Das Kriterium verlangt, dass alle drei Angaben für jede Komponente der Benutzeroberfläche im Code verfügbar sind: ein Name, eine Rolle und jeder Zustand oder Wert, den der Nutzer ändern kann, wobei Änderungen gemeldet werden, sobald sie eintreten. Ohne sie sagt ein Screenreader „Schaltfläche“ und nichts weiter oder gar nichts, und eine Sprachsteuerung kann das Bedienelement nicht ansprechen.

Native HTML-Bedienelemente, die wie spezifiziert eingesetzt werden, erfüllen das von Haus aus: ein button-Element mit Text, ein input mit label, ein Link mit Inhalt. Das Kriterium greift bei dem, was Autoren selbst bauen, etwa einem div, das auf Klicks reagiert, einem eigenen Dropdown oder einem Akkordeon. Diese brauchen eine Rolle, einen zugänglichen Namen und Zustandsattribute wie aria-expanded oder aria-checked, die das Skript aktuell hält. Ausnahmen nennt das Kriterium nicht. Ein Bedienelement, das mit der Maus funktioniert und im Accessibility Tree fehlt, fällt durch.

/ Woran Seiten scheitern

  • Eine Schaltfläche enthält nur ein Symbol und hat keinen Text, kein aria-label und kein title.
  • Ein div oder span mit Klick-Handler verhält sich wie eine Schaltfläche und hat keine Rolle.
  • Ein Textfeld hat kein label-Element, kein aria-label und kein aria-labelledby.
  • Ein Akkordeon oder eine Menüschaltfläche öffnet und schließt sich, ohne dass sich aria-expanded jemals ändert.
  • Ein aria-labelledby-Attribut nennt eine id, die es auf der Seite nicht gibt, sodass der berechnete Name leer ist.

/ So prüfen Sie es selbst

  1. Gehen Sie die Seite mit der Tabulatortaste durch, während ein kostenloser Screenreader wie NVDA läuft. An jedem Halt sollten Sie einen Namen, eine Rolle und, wo zutreffend, einen Zustand hören.
  2. Untersuchen Sie jedes Bedienelement im Bereich Accessibility der Entwicklerwerkzeuge des Browsers und lesen Sie Name, Rolle (Role) und Zustandseigenschaften ab.
  3. Bedienen Sie jedes selbst gebaute Widget: Akkordeon öffnen, Schalter umlegen, Option wählen. Prüfen Sie, ob sich der im Accessibility Tree angezeigte Zustand mitändert.
  4. Lassen Sie eine kostenlose Browsererweiterung wie axe DevTools oder WAVE laufen, um Bedienelemente ohne Namen aufzulisten, und bestätigen Sie die Funde von Hand.
  5. Suchen Sie im Quelltext nach aria-labelledby, aria-describedby und aria-controls und bestätigen Sie, dass jede darin genannte id existiert.

/ So beheben Sie es

  • Greifen Sie zuerst zum nativen Element: button für Aktionen, a mit href für Navigation sowie input, select und textarea für Daten.
  • Benennen Sie Symbolschaltflächen mit aria-label oder mit visuell verstecktem Text in der Schaltfläche, und geben Sie jedem iframe ein title-Attribut.
  • Verbinden Sie jedes Feld über for und id mit einem label-Element, oder nutzen Sie aria-labelledby, wo ein sichtbarer Text bereits als Beschriftung dient.
  • Setzen Sie bei eigenen Widgets die Rolle und halten Sie aria-expanded, aria-checked oder aria-selected im Gleichschritt mit dem, was das Widget zeigt, im selben Skript, das es ändert.
  • Setzen Sie aria-hidden="true" auf nichts, das fokussierbare Elemente enthält, und geben Sie einem geöffneten Dialog aria-modal="true" und einen Namen.

/ Was unser Scanner prüft

Die statische Analyse zählt Felder ohne aria-label, aria-labelledby, title oder passendes label for. In der gerenderten Seite melden unsere Regeln leere zugängliche Namen, ARIA-Verweise auf fehlende ids, fokussierbare Inhalte unter aria-hidden, iframes ohne Titel sowie Dialoge, Comboboxen und Akkordeons ohne Zustandsattribute. axe und HTML_CodeSniffer ergänzen Schaltflächen, Links und Felder ohne Namen sowie ungültige ARIA-Werte. Nichts bedient ein Widget, Zustandsänderungen bleiben also ungeprüft.

/ Wer es verletzt, nach unseren eigenen Messungen

Gemessene Stellen, die dieses Kriterium verletzen, meiste Vorkommen zuerst
StelleSektorVorkommenWert
Gdańskcity · PL1312
Toruńcity · PL8211
Bundesagentur für Arbeitgovernment · DE5816
Bundesministerium für Bildung und Forschunggovernment · DE498
Bundeszentrale für politische Bildunggovernment · DE3910
Poznańcity · PL361
Polski Instytut Sztuki Filmowejculture · PL217
Uniwersytet Jagiellońskieducation · PL211
PKP Intercitytransport · PL202
Stuttgartcity · DE206
Policjagovernment · PL1812
Social Security Administrationgovernment · US16-
Deutsche Bahntransport · DE155
Rzeszówcity · PL158
Universität Heidelbergeducation · DE1521
Uniwersytet Warszawskieducation · PL154
Urząd Ochrony Danych Osobowychgovernment · PL136
Deutsche Rentenversicherunggovernment · DE125
Komisja Nadzoru Finansowegogovernment · PL1217
Poczta Polskagovernment · PL1216
Szczecincity · PL122
Bundesregierunggovernment · DE114
Hamburgcity · DE1123
Nürnbergcity · DE112
Technische Universität Müncheneducation · DE1114
Bundesministerium der Justizgovernment · DE107
Politechnika Warszawskaeducation · PL1012
RWTH Aacheneducation · DE1019
State of Pennsylvaniagovernment · US1021
Centers for Disease Controlhealth · US98
Houstoncity · US87
King Countygovernment · US815
New Orleanscity · US87
New York Public Libraryculture · US823
Phoenixcity · US81
Uniwersytet im. Adama Mickiewiczaeducation · PL812
Rybnikcity · PL76
Seattlecity · US712
Teatr Wielki Opera Narodowaculture · PL73
Amtraktransport · US64
Baltimorecity · US67
Berliner Verkehrsbetriebetransport · DE621
Freie Universität Berlineducation · DE67
LA Metrotransport · US617
Ohio State Universityeducation · US66
Philadelphiacity · US68
State of Floridagovernment · US68
Uniwersytet Marii Curie-Skłodowskiejeducation · PL69
Düsseldorfcity · DE59
Gliwicecity · PL513
Indianapoliscity · US518
Krakówcity · PL512
Miami-Dade Countygovernment · US520
Nashvillecity · US512
Opolecity · PL58
Sąd Najwyższygovernment · PL514
Biblioteka Narodowaculture · PL416
Los Angeles Countygovernment · US49
Olsztyncity · PL48
Pacjent.gov.plhealth · PL49
Politechnika Poznańskaeducation · PL44
Stiftung Preußischer Kulturbesitzculture · DE421
Uniwersytet Mikołaja Kopernikaeducation · PL46
Bundesministerium des Innerngovernment · DE310
Bundesratgovernment · DE314
Las Vegascity · US38
Narodowy Fundusz Zdrowiahealth · PL318
Sejm RPgovernment · PL39
Senat RPgovernment · PL324
Statistisches Bundesamtgovernment · DE39
University of Floridaeducation · US323
Veterans Affairsgovernment · US333
Zamek Królewski w Warszawieculture · PL316
Bostoncity · US26
Bundesministerium der Finanzengovernment · DE213
Chicago Transit Authoritytransport · US24
Deutsche Nationalbibliothekculture · DE223
Dresdencity · DE215
Koleje Mazowieckietransport · PL217
New York Citycity · US237
Państwowa Komisja Wyborczagovernment · PL215
Politechnika Łódzkaeducation · PL25
Politechnika Śląskaeducation · PL22
Prezydent RPgovernment · PL215
San Franciscocity · US228
State of Texasgovernment · US222
Trybunał Konstytucyjnygovernment · PL214
University of Texas at Austineducation · US221
Zakład Ubezpieczeń Społecznychgovernment · PL227
Łódźcity · PL23
Bundesministerium für Gesundheitgovernment · DE146
Bundesnetzagenturgovernment · DE19
Bundestaggovernment · DE117
Cook Countygovernment · US113
Dallascity · US123
Department of Laborgovernment · US146
Detroitcity · US140
Gdyniacity · PL17
Hannovercity · DE110
Harris Countygovernment · US119
Karlsruher Institut für Technologieeducation · DE119
Krajowa Administracja Skarbowagovernment · PL15
Kölncity · DE116
Leipzigcity · DE126
Library of Congressculture · US130
Ludwig-Maximilians-Universität Müncheneducation · DE113
Minneapoliscity · US179
NASAgovernment · US123
Narodowy Bank Polskigovernment · PL123
Narodowy Instytut Dziedzictwaculture · PL16
Narodowy Instytut Zdrowia Publicznegohealth · PL125
Państwowa Inspekcja Pracygovernment · PL150
Państwowa Straż Pożarnagovernment · PL128
Politechnika Gdańskaeducation · PL122
Politechnika Wrocławskaeducation · PL117
Radomcity · PL12
Rzecznik Praw Obywatelskichgovernment · PL142
Smithsonianculture · US114
State of Georgiagovernment · US153
Szkoła Główna Handlowaeducation · PL112
Tychycity · PL120
Uniwersytet Wrocławskieducation · PL115
Uniwersytet Łódzkieducation · PL19
Uniwersytet Śląskieducation · PL19
Warszawacity · PL120
Warszawski Uniwersytet Medycznyeducation · PL113
Wrocławcity · PL12
Zielona Góracity · PL17

Eine Seite je Stelle, automatisch im Wochenrhythmus gemessen. Behebungen seit dem letzten Durchlauf erscheinen beim nächsten, und jede Eintragsseite bietet ein Recht auf Gegendarstellung.

/ Fragen zu diesem Kriterium

Was ist ein zugänglicher Name?

Das ist der Text, den ein Browser assistiver Technologie als Namen eines Elements bereitstellt. Der Browser berechnet ihn in fester Reihenfolge: zuerst aria-labelledby, dann aria-label, dann die native Quelle wie ein label-Element, das alt-Attribut oder der Text in einer Schaltfläche oder einem Link, zuletzt das title-Attribut. Ein Screenreader sagt ihn zusammen mit der Rolle an, etwa „Suchen, Schaltfläche“.

Brauche ich ARIA, um Name, Rolle, Wert zu erfüllen?

Oft nicht. Native HTML-Elemente bringen bereits eine Rolle mit, beziehen ihren Namen aus Inhalt oder Beschriftung und melden ihren Zustand selbst. ARIA wird gebraucht, wenn Sie ein Bedienelement bauen, das HTML nicht bietet, oder wenn ein natives Bedienelement keinen sichtbaren Text hat, der es benennt. ARIA an einem Element, das sich nicht wie die behauptete Rolle verhält, macht es schlimmer.

Warum sagt ein Screenreader auf meiner Seite nur „Schaltfläche“?

Weil die Schaltfläche eine Rolle und keinen zugänglichen Namen hat. Die übliche Ursache ist eine Symbolschaltfläche: ein svg oder ein Hintergrundbild in einem button-Element ohne Text. Ergänzen Sie ein aria-label, das sagt, was die Schaltfläche tut, oder setzen Sie visuell versteckten Text hinein. Ist das Symbol ein img-Element, geben Sie ihm einen Alternativtext, der dann die Schaltfläche benennt.