aria-roledescription
Autorenseitige Beschreibung von Rollen
[Materialsammlung]
Mit dem Attribut aria-roledescription
kann für definierte Rollen ein individueller Name festgelegt werden.
Dieser Name kann von assistierenden Technologien als Beschriftung für die Rolle angewendet werden.
Auf Grund der mangelhaften Umsetzung durch assistierende Technologien und möglicher Probleme für die Nutzungsfreundlichkeit bei deren Verwendung sollte das Attribut derzeit nur sehr vorsichtig eingesetzt werden.
Definition und Verwendung
Die WAI definiert das Attribut folgendermaßen:
„Definiert eine von Menschen lesbarene, von Autor*innen eingegrenzte Beschreibung für die Rolle eines Elements.“
Der Begriff Element wird hier wie in Markup-Sprachen verwendet. (HTML, SVG)
Erläuterungen zur Definition
Aus der Definition lassen sich folgende Merkmale ableiten:
- Das Attribut weist keine Rolle zu, sondern modifiziert lediglich die von Menschen lesbare Beschreibung der Rolle, also das was von einem Screen Reader wiedergegeben werden soll.
- Das Element muss zumindest implizit bereits über eine Rolle Verfügen. Eine generische Rolle, wie ein
<div>
-Element verfügt über keine Rollenbeschreibung, die überschrieben werden könnte. - Der modifizierte Name der Rolle wirkt sich eingegrenzt nur auf das jeweilige Element aus. Die Rollenbeschreibung wird also nicht generell geändert.
Anforderungen an assistierende Technologien
Assistierende Technologien sollten die Funktionalitäten der jeweiligen Rolle des Elements nicht ändern, sondern lediglich die Bezeichnung aus dem Wert des Attributs übernehmen. Es sollte also beispielsweise weiterhin möglich sein, Kurztasten zur Navigation zwischen Elementen zu verwenden, auch wenn die Rolle eine andere Bezeichnung hat.
JAWS scheint sich an diese Vorgabe zu halten.
Einsatzszenarien
Die Umsetzung der Rollenbeschreibung durch assistierende Technologien ist weder umfassend noch konsistent gewährleistet.
Das Attribut sollte aus heutiger Sicht überwiegend nur folgenden Komponenten zugewiesen werden:
- Nicht-interaktive Container (Rollen
group
,region
, …) - Spezifischerer Komponenten ohne verfügbare Standardrollen ( Akkordeon, Karussell, Standortangaben, Beispiele, …)
Technische Realisierung
Mit aria-roledescription wird keine neue Rolle festgelegt, sondnern die Beschriftung einer vorhandenen Rolle modifiziert. Das Element muss also bereits über eine valide ARIA-Rolle zumindest implizit verfügen.
Als Wert ist eine frei gewählte Zeichenfolge (String) zulässig. Ein leerer Wert für das Attribut ist nicht zulässig. Wer einem Element die Rollensemantik gänzlich entziehen möchte, muss die ARIA-Attribute role="none"
oder role="pressentation"
verwenden.
Das Attribut ist technisch gesehen performativ. Der Wert des Attributs ändert den Namen der Rolle eines Elements.
Die Bezeichnung der Rolle besteht aus dem Wert des Attributs.
Der Inhalt der Komponente wird mit einem aria-label oder aria-labelledby
-Attribut angegeben. Dessen Formulierung entspricht einer Überschrift für die Komponente. Wenn die Komponente bereits über eine Überschrift verfügt, wird auf diese zweckmäßig mittels aria-labelledby
referenziert.
<section
aria-roledescription="[Rolle]"
aria-label="[Name]">
<!--Inhalte der Komponente -->
</section>
Beispiele
Standortangaben
Standortangaben (Breadcrumbs) informieren über die hierarchische Anordnung der aktuellen Webseite innerhalb des gesamten Webauftritts. Durch folgenden Code wird die Beschreibung von Standortangaben durch assistierende Technologien von „Navigation“ auf „Standort“ konkretisiert:
<nav aria-roledescription="Standort"> <!-- Verzeichnisbaum als Linkliste --> </nav>
Teste diesen Code in der Labordatei
Container für Karussell
Für Karusselle steht keine Rolle im ARIA-Portfolio zur Verfügung. Mit folgendem Code wird eine entsprechende Rolle explizit für einen Inhalt festgelegt. Der Bereich wird zudem durch eine Referenzierung auf die Überschrift beschriftet:
<section
aria-roledescription="Karussell"
aria-labelledby="heading2">
<h3 id="heading2" >Aktuelle Videos</h3>
<!-- Steuerelemente und Inhalte eines Karussells -->
</section>
Aspekte der Barrierefreiheit
Bedeutung und Auswirkungen von Rollen
Screen Reader lesen nicht nur den Text eines Elements vor, sondern greifen auch auf verfügbare Informationen, wie semantische Rollen zu. Damit wird nicht-sehenden Menschen ein Verständnis für die Bedeutung einer Komponente vermittelt.
Rollenzuweisungen durch HTML-Elemente oder ARIA-Anweisungen wirken sich in folgenden Bereichen auf die Barrierefreiheit aus:
- Beginn und Ende eines Elements sind technisch festgelegt und können von assistierenden Technologien angegeben werden.
- Die Bedeutung einer Rolle kann von assistierenden Technologien ermittelt und dargestellt werden.
Bei Standardkomponenten kann die Bedeutung sogar unabhängig von der Sprache einer Seite durch die eingestellte Standardsprache aus Betriebssystem oder Browser erfolgen.
Überschreiben von Standardrollen
Eine zentrale Funktion des Attributs ist die Modifikation der Beschreibung einer Rolle. Erhalten Standardelemente einen anderen Namen, entsprechen sie nicht mehr dem Erfahrungshorizont von Nutzer’innen.
Problem der natürlichen Sprache
Standardbeschriftungen für ARIA-Rollen werden von assistierenden Technologien in deren eingestellter Standardsprache wiedergegeben (Button / Schalter / ...). Eine entsprechende sprachspezifische Beschriftung ist durch aria-roledescription nicht gegeben.
Verhalten von assistierenden Technologien
Test der Umsetzung durch Screen Reader
In der folgenden Tabelle wird die Darstellung eines vorhandenen aria-roledescription
-Attributs durch assistierende Technologien in Abhängigkeit von ausgewählten Rollen ausgewertet. Geprüft wird die Ansage des Attributwertes bei der Navigation mittels ↓.
Testumgebung: JAWS 2023 und NVDA 2022-3 Standardkonfiguration unter Chrome 117 und Firefox 117
Element / Rolle | JAWS unter Chrome | JAWS unter Firefox | NVDA unter Chrome | NVDA unter Firefox |
---|---|---|---|---|
<div> |
keine | Bei Link als Kindelement | keine | Anfang & Ende |
group |
Bei Link als Kindelement | Bei Link als Kindelement | Anfang & Ende | Anfang & Ende |
<hgroup> |
Bei Link als Kindelement | Bei Link als Kindelement | Anfang & Ende | Anfang & Ende |
list |
keine | keine | Anfang & Ende | Anfang & Ende |
menu |
Anfang & bei Link als Kindelement | Anfang & bei Link als Kindelement | Anfang & Ende | Anfang & Ende |
menubar |
Bei Link als Kindelement | Bei Link als Kindelement | Anfang & Ende | Anfang & Ende |
navigation |
Anfang & Ende | Anfang & Ende | Anfang & Ende | Anfang & Ende |
scection |
keine | keine | Anfang & Ende | Anfang & Ende |
tablist > tab |
Anfang & Ende | Anfang & bei Link als Kindelement | Anfang & Ende | Anfang & Ende |
Zusammenfassung der Testergebnisse
- Die Interpretation durch den Screen Reader ist vom Browser abhängig.
- JAWS interpretiert das Attribut sehr inkonsistent und eigenwillig.
- Die technische Rollenbeschreibung wird am Anfang und Ende der Komponente vielfach ignoriert.
- Teilweise wird lediglich der Beginn des Bereichs angekündigt.
- Teilweise wird die Rolle erst beim Betreten des ersten Kindelements angesagt.
- Teilweise wird die vorgesehene Rollenbeschreibung bei Links als Kindelementen ergänzt. Dies kann zu Fehlverständnis führen.
- Bei
<nav>
undrole=navigation
dürfte auf eine korrekte Umsetzung vertraut werden können.
Die Tests sind in anderen Kontexten weiter durchzuführen. Erfahrungsberichte sind willkommen!