Zu Beginn des Jahres hat Chrome 88,2% der Tests im Schwerpunktbereich „Bedienungshilfen“ von Interop 2024 bestanden. Im Juni 2024 waren wir die erste Organisation, die 100% der Tests bestanden hat. In diesem Beitrag wird erläutert, wie wir dieses Ziel erreicht haben.
Was ist in den Schwerpunktbereich „Barrierefreiheit“ inbegriffen?
Wie bei jedem Schwerpunktbereich bei Interop 2024 wird der Bereich „Barrierefreiheit“ durch eine Reihe von Webplattformtests für ausgewählte Funktionen definiert. Die Tests bei Interop 2024 sollen dafür sorgen, dass alle Browser barrierefreie Namen und berechnete Rollen auf die gleiche Weise erstellen.
Barrierefreie Namen geben den Zweck oder die Absicht eines HTML-Elements an. So können Nutzer besser nachvollziehen, wozu das Element dient und wie sie damit interagieren können. Die accname-Spezifikation definiert, wie Browser diesen barrierefreien Namensstring für ein Element erstellen. Die ARIA-Spezifikation enthält eine Schritt-für-Schritt-Anleitung zum Berechnen dieses Namens.
Die berechnete Rolle eines Elements ist ein String, der die Rolle des Elements darstellt, wie sie von der Browser-Engine berechnet wird. Dieser Modus wird hauptsächlich in Entwicklertools und beispielsweise in der WebDriver-Funktion getComputedRole
verwendet, um Interoperabilitätstests zu ermöglichen.
Was musste das Chrome-Team tun?
Es gab zwei größere Arbeitsbereiche, die wir abschließen mussten: die Zuordnung von Rollen zu generischen Rollen ändern und nicht mehr unterstützte Rollen entfernen. Außerdem mussten noch einige kleinere Fehler behoben und Funktionen implementiert werden. Neben den folgenden Änderungen, die das Chrome-Team vorgenommen hat, haben wir auch mit Microsoft zusammengearbeitet, um Fehler zu beheben, die das Unternehmen im Hinblick auf Barrierefreiheit in Chromium behoben hat.
Zuordnung bestimmter Rollen zu einer generischen Rolle ändern
Wenn Sie eine Zuordnung zu einer generischen Rolle ändern, werden die Barrierefreiheits-Semantiken aus einem Element entfernt. Generische Elemente bieten keinen Mehrwert für einen Navigationsbaum für Barrierefreiheit und werden daher nicht in den Baum aufgenommen. Das wirkt sich positiv auf die Leistung aus und macht den Baum kleiner und für Hilfstechnologien leichter zu parsen. Die folgenden Rollen werden in eine generische Rolle geändert.
- Ein
<header>
mit dem Attribut „<main>
“ oder ein Inhaltselement für Abschnitte (<article>
,<aside>
,<nav>
oder<section>
). - Ein
<footer>
mit dem Attribut „<main>
“ oder ein Inhaltselement für Abschnitte (<article>
,<aside>
,<nav>
oder<section>
). - Ein
<aside>
in einem Inhaltselement für Abschnitte (<article>
,<aside>
,<nav>
oder<section>
) ohne zugänglichen Namen. - Ein
<section>
ohne barrierefreien Namen. - Waisenlistenelemente (
<li>
)
Bei den ersten vier Aufzählungspunkten werden diese Elemente in der Regel Markierungsrollen zugeordnet. Zu viele Markierungen auf einer Seite können die Navigation erschweren. Mit dieser Änderung werden redundante Markierungen reduziert, sodass die Navigation auf der Seite einfacher wird. Das letzte Element weist in der Regel auf einen Fehler des Seitenentwicklers hin. Ein Listenelement sollte immer in einer Liste enthalten sein. Daher wird einem verwaisten Element eine allgemeine Rolle zugewiesen.
Eine nicht mehr unterstützte Rolle entfernen
Die Rolle directory
wurde eingestellt und der Rolle „Liste“ zugeordnet. In ARIA 1.2 wird die Rolle directory
nicht mehr unterstützt. In der Spezifikation wird erläutert, dass sie der Rolle list
entspricht und dass die Entwickler list
verwenden sollten. Um die Semantik älterer Inhalte mit directory
beizubehalten, wird directory
in Chrome jetzt auf list
umgestellt.
Weitere Fehlerkorrekturen
Die Rolle gridcell
wird jetzt unterstützt. Mit dieser neuen Rolle wird die Unterscheidung zwischen gridcell
und cell
klarer. Im Gegensatz zu cell
kann der Fokus auf gridcell
gelegt, sie bearbeitet und ausgewählt werden.
Wir haben die Berechnung der Fallback-Rolle hinzugefügt. Bisher wurde nicht nach Fallback-Rollen gesucht. Wenn die erste Rolle also ungültig war, wurde eine andere Rolle verwendet. Das entspricht nicht der Anleitung.
Einige Rollen sind nur gültig, wenn sie im richtigen Kontext verwendet werden. Wir haben eine Prüfung für die ungültige Verwendung von Rollen hinzugefügt:
- Die Rolle
row
muss sich intable
,grid
,rowgroup
odertreegrid
befinden. - Die Rolle
rowgroup
muss sich intable
,grid
,tree
odertreegrid
befinden. - Die Rolle
listitem
muss inlist
enthalten sein.
Wenn die Rolle ungültig ist, verwendet Chrome jetzt andere Informationen, z. B. das HTML-Element, um eine alternative Rolle zu berechnen.
Wir haben thead
und tfooter
als Teil des Baums für die Barrierefreiheit gekennzeichnet.
Bisher wurden sie als ignoriert markiert, aber weiterhin in den Stammbaum aufgenommen. Tabellenüberschriften und ‑fußzeilen können jetzt von Hilfstechnologien geparst werden.
Diese Änderungen sind für die meisten Entwickler möglicherweise nicht sichtbar. Da alle Browser daran arbeiten, dass diese Funktionen gleich funktionieren, sorgen wir dafür, dass verschiedene Rollen überall gleich angezeigt werden.