ElementInternals: ariaLabelledByElements-Eigenschaft
Baseline 2025Newly available
Since April 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Die ariaLabelledByElements
-Eigenschaft des ElementInternals
-Interfaces ist ein Array, das das Element (oder die Elemente) enthält, die einen zugänglichen Namen für das Element bereitstellen, auf das sie angewendet wird.
Die Eigenschaft ist hauptsächlich dazu gedacht, einem Element ein Label zuzuweisen, das keine standardmäßige Methode zur Definition seines zugänglichen Namens hat.
Zum Beispiel könnte dies verwendet werden, um ein generisches Containerelement zu benennen, wie ein <div>
oder <span>
, oder eine Gruppierung von Elementen, wie ein Bild mit einem Schieberegler, der verwendet werden kann, um dessen Deckkraft zu ändern.
Die Eigenschaft hat Vorrang vor anderen Mechanismen zur Bereitstellung eines zugänglichen Namens für Elemente und kann daher auch verwendet werden, um einem Element einen Namen zu geben, das ihn normalerweise aus seinem inneren Inhalt oder von einem zugehörigen Element wie einem Label erhält.
Das Thema aria-labelledby
enthält zusätzliche Informationen darüber, wie das Attribut und die Eigenschaft verwendet werden sollten.
Wert
Ein Array von Elementen. Der innere Text dieser Elemente kann durch Leerzeichen verbunden werden, um den zugänglichen Namen zu erhalten.
Beim Lesen ist das zurückgegebene Array statisch und schreibgeschützt. Beim Schreiben wird das zugewiesene Array kopiert: Nachfolgende Änderungen am Array beeinflussen den Wert der Eigenschaft nicht.
Beschreibung
Die Eigenschaft ist eine flexible Alternative zur Verwendung des aria-labelledby
-Attributs, um den zugänglichen Namen festzulegen.
Im Gegensatz zu aria-labelledby
müssen die dieser Eigenschaft zugewiesenen Elemente kein id
-Attribut haben.
Die Eigenschaft spiegelt das aria-labelledby
-Attribut des Elements wider, wenn es definiert ist, jedoch nur für aufgelistete Referenz-id
-Werte, die mit gültigen in-Scope-Elementen übereinstimmen.
Wenn die Eigenschaft gesetzt ist, wird das entsprechende Attribut gelöscht.
Für weitere Informationen zu reflektierten Elementreferenzen und Scope siehe Reflected element references im Reflected attributes-Leitfaden.
Beispiele
Den zugänglichen Namen abrufen
Dieses Beispiel zeigt, wie ariaLabelledByElements
verwendet werden kann, um programmgesteuert ein Label zu erhalten, das mit aria-labelledby
innerhalb des Shadow-Roots definiert wurde.
HTML
Das HTML definiert zwei <span>
-Elemente und verweist auf deren IDs im aria-labelledby
-Attribut eines <input>
.
Der zugängliche Name des <input>
ist daher die Verkettung des inneren Textes der beiden referenzierten Elemente.
<div id="host">
<template shadowrootmode="open">
<span id="label_1">Street name</span>
<input aria-labelledby="label_1 label_2" />
<span id="label_2">(just the name, no "Street" or "Road" or "Place")</span>
</template>
</div>
JavaScript
Der Code unten prüft zuerst, ob ariaLabelledByElements
unterstützt wird, und wenn nicht, wird das Ergebnis protokolliert und der Vorgang beendet.
Wenn die Eigenschaft unterstützt wird, wird zunächst der Wert der Eigenschaft protokolliert.
Dann iteriert er durch die zurückgegebenen Elemente, verkettet deren inneren Text und protokolliert den resultierenden zugänglichen Namen des Elements.
// Get access to the input within shadowRoot
const hostElement = document.getElementById("host");
const shadowRoot = hostElement.shadowRoot;
const inputElement = shadowRoot.querySelector("input");
// Feature test for ariaLabelledByElements
if ("ariaLabelledByElements" in ElementInternals.prototype) {
// Get and log attribute that provides the accessible name
log(`aria-labelledby: ${inputElement.getAttribute("aria-labelledby")}`);
// Get and log elements that provide the accessible name
const labelElements = inputElement.ariaLabelledByElements;
log(`ariaLabelledByElements: ${labelElements}`);
// Log inner text of elements to get accessible name
const text = labelElements.map((e) => e.textContent.trim()).join(" ");
log(`Accessible name: ${text.trim()}`);
} else {
log("ariaLabelledByElements not supported by browser");
}
Ergebnis
Das unten stehende Protokoll zeigt die Ausgabe des obigen Codes.
Es zeigt das Array der referenzierten HTMLSpanElement
-Elemente und den resultierenden zugänglichen Namen aus ihrem inneren Text.
Spezifikationen
Specification |
---|
Accessible Rich Internet Applications (WAI-ARIA) # dom-ariamixin-arialabelledbyelements |
Browser-Kompatibilität
Siehe auch
aria-labelledby
-AttributElement.ariaLabelledByElements
- Reflected element references im Attribute reflection-Leitfaden.