Skip to main content

Crate accname

Crate accname 

Source
Expand description

WAI-ARIA Accessible Name and Description Computation, generisch über das Dokumentmodell aus a11y_dom.

Umsetzung von Accessible Name and Description Computation 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-labelledby löst Verweisketten auf und kann Knoten heranziehen, die sonst versteckt sind; ein eingebettetes Steuerelement steuert innerhalb einer Rekursion seinen Wert bei, nicht seine Beschriftung; und für Rollen wie generic oder paragraph ist ein Name schlicht verboten.

use a11y_dom::{elements, Arena, Document, Node};
use accname::{name, IdIndex};

let doc = Arena::builder()
    .open("form")
        .open("span").attr("id", "l").text("Vorname").close()
        .open("input").attr("id", "v").attr("aria-labelledby", "l").close()
    .close()
    .build();

let ids = IdIndex::build(doc.root());
let feld = elements(&doc).find(|n| n.local_name() == "input").unwrap();
assert_eq!(name(feld, &ids).as_deref(), Some("Vorname"));

§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.

Structs§

IdIndex
Nachschlagewerk von ID auf Knoten, plus die label[for]-Zuordnung.

Functions§

allows_name_from_content
Ob der Name dieser Rolle aus dem Inhalt des Elements gebildet wird.
description
Berechnet die Accessible Description.
implicit
Die implizite Rolle des HTML-Elements, ohne Rücksicht auf role.
name
Berechnet den Accessible Name.
name_is_prohibited
Ob ein Accessible Name für diese Rolle verboten ist.
role
Die berechnete Rolle eines Knotens.