The Accessibility-Tree
Der AccTree bestimmt, was der Screenreader zu lesen bekommt.
Der Browser nimmt die HTML-Datei und baut daraus den DOM-Tree (Document Object Model). Der DOM-Tree ist sozusagen die Bauanleitung für die Website, die der Besucher sieht.
Anschließend untersucht der Browser alle Elemente des DOM-Trees und prüft anhand der Semantik, den Styles und den ARIA-Attributen, ob sie für den Accessibility-Tree relevant sind. Aus den ausgewählten Elementen baut der Browser dann den Accessibility-Tree. Der AccTree ist also ein Subset des DOM-Trees.
Das AccTree Object
Ein AccTree Objekt liefert dem Screenreader Informationen:
- Role – Was für ein Objekt ist das?
- Name – Wie heißt dieses Objekt?
- Description – Wie lässt sich dieses Objekt weiter beschreiben?
- State – Welchen Status hat das Objekt gerade?
Role
Button, Link, Liste, ...
Die Implicit Role kommt von den HTML semantics. Diese kann von der Explicit Role – den ARIA-Attributes, überschrieben werden.
Name*
Text Label eines Buttons, ...
Der Name hilft zu erkennen, was das Objekt macht.
Description*
Beschreibung eines Text-Input-Feldes, ...
Welcher Input wird erwartet? Name, Passwort, ... ?
State
Aktueller Status des Objekts
Checkbox: checked/unchecked, Button: pressed/unpressed, ...
Properties and Relationships
Auch das CSS kann dem AccTree Informationen liefern:
- Form field: required, disabled
- Button: focusable
- Form field: gehört das Objekt zu einer Gruppe?
- Tab: ist das Objekt an andere Objekte auf der Seite gebunden?
AAPM
Screenreader beziehen ihre Informationen also aus dem AccTree. Sie könnten das DOM betreten, tun es aber nicht. Wie passiert nun diese Informationsübertragung vom DOM zum AccTree genau?
Hier kommen die AAPM ins Spiel. AAPM steht für Accessibility-API-Mappings. Diese AAPMs sind Teil des Browsers und definieren, welche ARIA-Rolle dem betreffenden HTML-Element zugeordnet wird.
Die AAPI - Accessibility-API wird vom jeweiligen Betriebssystem zur Verfügung gestellt. Die AAPI-Mappings unterscheiden sich daher von OS zu OS. Auch die Screenreader lesen Dinge unterschiedlich vor – je nach verwendeter Kombination von OS, Browser und Screereader. Das ist aber kein Bug, es ist ein Feature!
Links zum Text
- HTML Accessibility API Mappings 1.0
- ARIA in HTML für die Praxis