ARIA
Accessible Rich Internet Applications (ARIA) ist eine Sammlung von Rollen und Attributen, die Möglichkeiten definieren, um Webinhalte und Webanwendungen (insbesondere jene, die mit JavaScript entwickelt wurden) für Menschen mit Behinderungen zugänglicher zu machen.
Es ergänzt HTML, sodass Interaktionen und Widgets, die häufig in Anwendungen verwendet werden, an assistive Technologien weitergegeben werden können, wenn es anderweitig keinen Mechanismus gibt. Zum Beispiel ermöglicht ARIA zugängliche JavaScript-Widgets, Formularhinweise und Fehlermeldungen, Live-Inhaltsaktualisierungen und mehr.
Warnung: Viele dieser Widgets werden in modernen Browsern vollständig unterstützt. Entwickler sollten das richtige semantische HTML-Element anstelle von ARIA verwenden, wenn ein solches Element existiert. Zum Beispiel haben native Elemente eingebaute Tastaturzugänglichkeit, Rollen und Zustände. Wenn Sie jedoch ARIA verwenden, sind Sie dafür verantwortlich, das entsprechende Browserverhalten im Skript nachzuahmen.
Die erste Regel der ARIA-Verwendung lautet: "Wenn Sie ein natives HTML-Element oder Attribut mit den Semantik- und Verhaltensweisen verwenden können, die Sie benötigen, anstatt ein Element zweckzuentfremden und eine ARIA-Rolle, einen Zustand oder eine Eigenschaft hinzuzufügen, um es zugänglich zu machen, dann tun Sie dies."
Hinweis: Es gibt ein Sprichwort: "Keine ARIA ist besser als schlechte ARIA." In WebAim's Umfrage von über einer Million Startseiten wurde festgestellt, dass Startseiten mit vorhandener ARIA im Durchschnitt 41 % mehr erkannte Fehler aufwiesen als solche ohne ARIA. Obwohl ARIA entwickelt wurde, um Webseiten zugänglicher zu machen, kann es, wenn es falsch verwendet wird, mehr schaden als nützen.
Hier ist das Markup für ein Fortschrittsbalken-Widget:
<div
id="percent-loaded"
role="progressbar"
aria-valuenow="75"
aria-valuemin="0"
aria-valuemax="100"></div>
Dieser Fortschrittsbalken ist mit einem <div>
erstellt, das keine Bedeutung hat. Wir fügen ARIA-Rollen und -Eigenschaften hinzu, um Bedeutung hinzuzufügen. In diesem Beispiel informiert das Attribut role="progressbar"
den Browser darüber, dass es sich bei diesem Element tatsächlich um ein JavaScript-gesteuertes Fortschrittsbalken-Widget handelt. Die Attribute aria-valuemin
und aria-valuemax
geben die Minimal- und Maximalwerte des Fortschrittsbalkens an, und aria-valuenow
beschreibt den aktuellen Stand und muss daher mit JavaScript aktualisiert werden.
Neben dem direkten Einfügen in das Markup können ARIA-Attribute dem Element hinzugefügt und dynamisch mit JavaScript-Code wie diesem aktualisiert werden:
// Find the progress bar <div> in the DOM.
const progressBar = document.getElementById("percent-loaded");
// Set its ARIA roles and states,
// so that assistive technologies know what kind of widget it is.
progressBar.setAttribute("role", "progressbar");
progressBar.setAttribute("aria-valuemin", 0);
progressBar.setAttribute("aria-valuemax", 100);
// Create a function that can be called at any time to update
// the value of the progress bar.
function updateProgress(percentComplete) {
progressBar.setAttribute("aria-valuenow", percentComplete);
}
Alle Inhalte, die für Benutzer ohne assistive Technologien zugänglich sind, müssen auch für assistive Technologien verfügbar gemacht werden. Ebenso sollten keine Funktionen enthalten sein, die sich ausschließlich an Benutzer von assistiven Technologien richten, die nicht auch für jene zugänglich sind, die keine assistiven Technologien verwenden. Der oben genannte Fortschrittsbalken muss gestylt werden, um wie ein Fortschrittsbalken auszusehen.
Es wäre viel einfacher gewesen, das native <progress>
-Element zu verwenden:
<progress id="percent-loaded" value="75" max="100">75 %</progress>
Hinweis:
Das min
-Attribut ist für das <progress>
-Element nicht zulässig; sein Minimalwert ist immer 0
.
Unterstützung
Wie bei jeder anderen Webtechnologie gibt es unterschiedliche Grade der Unterstützung für ARIA. Die Unterstützung hängt vom verwendeten Betriebssystem und Browser ab sowie von der Art der assistiven Technologie, die damit interagiert. Darüber hinaus sind die Versionen des Betriebssystems, des Browsers und der assistiven Technologie ausschlaggebende Faktoren. Ältere Softwareversionen unterstützen möglicherweise bestimmte ARIA-Rollen nicht, bieten nur teilweise Unterstützung oder melden deren Funktionalität falsch.
Es ist auch wichtig zu berücksichtigen, dass einige Personen, die auf assistive Technologie angewiesen sind, zögern, ihre Software zu aktualisieren, aus Angst, die Fähigkeit, mit ihrem Computer und Browser zu interagieren, zu verlieren. Aus diesem Grund ist es wichtig, wann immer möglich semantische HTML-Elemente zu verwenden, da semantisches HTML eine viel bessere Unterstützung für assistive Technologien bietet.
Es ist auch wichtig, Ihr erstelltes ARIA mit tatsächlicher assistiver Technologie zu testen. Dies liegt daran, dass Browser-Emulatoren und -Simulatoren nicht wirklich effektiv sind, um die volle Unterstützung zu testen. Ebenso sind Proxy-Lösungen für assistive Technologien nicht ausreichend, um die Funktionalität vollständig zu garantieren.
Referenzen
- ARIA-Rollen
-
Referenzseiten, die alle auf MDN diskutierten WAI-ARIA-Rollen abdecken.
- ARIA-Zustände und -Eigenschaften
-
Referenzseiten, die alle auf MDN diskutierten WAI-ARIA-Zustände und -Eigenschaften abdecken.
Standardisierungsbemühungen
- WAI-ARIA-Spezifikation
-
Die W3C-Spezifikation selbst.
- WAI-ARIA-Autorpraktiken
-
Die offiziellen Best Practices-Dokumente, wie man am besten gängige Widgets und Interaktionen ARIA-fiziert. Eine hervorragende Ressource.
ARIA für geskriptete Widgets
-
Eingebaute Elemente wie
<input>
,<button>
usw. haben eingebaute Tastaturzugänglichkeit. Wenn Sie diese mit<div>
s und ARIA "faken", müssen Sie sicherstellen, dass Ihre Widgets tastaturzugänglich sind. - Live-Bereiche
-
Live-Bereiche geben Bildschirmlesern Hinweise, wie Änderungen der Inhalte einer Seite zu behandeln sind.
Videos
Die folgenden Vorträge sind eine großartige Möglichkeit, ARIA zu verstehen:
ARIA, Accessibility APIs und Codierung wie Sie es ernst meinen! – Léonie Watson