accname
WAI-ARIA Accessible Name and Description Computation in Rust, generisch über das
Dokumentmodell aus a11y-dom. Teil von
a11y-core.
Umsetzung von accname 1.2 und den Namensregeln aus HTML-AAM 1.0 — gegen die Spezifikation geschrieben, nicht gegen eine vorhandene Implementierung. Die Schrittnummern im Quelltext entsprechen denen des Normtexts.
Warum das nicht nebenbei geht
Eine Näherung aus „Teilbaumtext plus aria-label" liegt in genau den Fällen
falsch, in denen es darauf ankommt:
aria-labelledbylöst Verweisketten auf und darf dabei Knoten heranziehen, die sonst versteckt sind- ein eingebettetes Steuerelement steuert innerhalb einer Rekursion seinen Wert bei, nicht seine Beschriftung
- für Rollen wie
genericoderparagraphist ein Name schlicht verboten
use ;
use ;
let doc = builder
.open
.open.attr.text.close
.open.attr.attr.close
.close
.build;
let ids = build;
let feld = elements.find.unwrap;
assert_eq!;
Neben name gibt es description und role — Letzteres als Rollenberechnung
nach HTML-AAM, inklusive der kontextabhängigen Fälle: header und footer sind
nur außerhalb sektionierender Elemente Landmarks, section nur benannt eine
region, img mit leerem alt ist presentation.
Grenze ohne Rendering
Schritt 2A der Spezifikation schließt versteckte Knoten aus. Ohne
Rendering-Daten sind nur aria-hidden="true" und das hidden-Attribut
erkennbar — display: none und visibility: hidden nicht. Ein Host mit
a11y_dom::Rendering kann hier genauer sein; dieses Crate bleibt bewusst bei
dem, was ohne Layout entscheidbar ist.
Lizenz
MIT.