IFocusableNode-Schnittstelle
Stellt alles dar, was den Eingabefokus haben kann.
Unterschrift:
export interface IFocusableNode
Methoden
Method | Beschreibung |
---|---|
canBeFocused() | Gibt an, ob dieser Knoten den Fokus zulässt. Wenn „false“ zurückgegeben wird, werden keine der anderen IFocusableNode-Methoden aufgerufen. Beachten Sie, dass besondere Vorsicht geboten ist, wenn Implementierungen dieser Funktion ihren Rückgabewert im Laufe der Lebensdauer des Knotens dynamisch ändern, da bestimmte Umgebungsbedingungen die Fokussierbarkeit des DOM-Elements dieses Knotens beeinträchtigen können (z. B. ob das Element einen positiven oder nullbasierten Tabindex hat). Wenn Sie den Wert von „true“ in „false“ ändern, während der Knoten den Fokus hat, wird der aktuelle Fokus des Knotens oder der interne Status von FocusManager nicht sofort geändert. Dies kann dazu führen, dass einige Funktionen des Knotens später aufgerufen werden, wenn der Fokus verloren geht, da der Knoten zum Zeitpunkt des Fokussierens als fokussierbar galt. Implementierungen sollten hier in der Regel immer „true“ zurückgeben, es sei denn, es gibt Umstände, unter denen dieser Knoten bei der Fokusberücksichtigung übersprungen werden sollte. Beispiele hierfür sind deaktivierte oder schreibgeschützte Elemente, rein visuelle Dekorationen oder Knoten ohne visuelle Darstellung, die diese Schnittstelle implementieren müssen (z.B. weil eine übergeordnete Schnittstelle sie erweitert). Berücksichtigen Sie die Best Practices für Barrierefreiheit, wenn Sie festlegen, ob ein Knoten fokussierbar sein soll. Auch deaktivierte und schreibgeschützte Elemente sind oft relevant, um Nutzern (insbesondere bei Verwendung eines Screenreaders) einen organisatorischen Kontext zu bieten. |
getFocusableElement() | Gibt das DOM-Element zurück, für das der Fokus explizit angefordert werden kann. WICHTIG: Dieses Element muss auf der Seite sichtbar sein, da es explizit fokussiert und sein Stil je nach aktuellem Fokusstatus (z.B. verschwommen, aktiv fokussiert und passiv fokussiert) geändert wird. Dem Element wird einer von zwei Stilen zugewiesen (wenn kein Stil zugewiesen ist, ist das Element verschwommen oder nicht fokussiert): - blocklyActiveFocus - blocklyPassiveFocus Das zurückgegebene Element muss außerdem eine gültige ID haben, die auf der gesamten Seite eindeutig ist. Wenn keine eindeutige ID vorhanden ist, kann es passieren, dass beim Versuch, einen Knoten zu fokussieren (z. B. durch einen Mausklick), ein anderer Knoten mit derselben ID vom FocusManager fokussiert wird. Das zurückgegebene Element muss sichtbar sein, wenn der Knoten jemals über FocusManager.focusNode() oder FocusManager.focusTree() fokussiert wird. Ein Element darf ausgeblendet sein, bis onNodeFocus() aufgerufen wird, oder durch einen Aufruf von onNodeBlur() ausgeblendet werden. Es wird erwartet, dass sich das tatsächlich zurückgegebene Element während der Lebensdauer des Knotens nicht ändert. Das heißt, seine Eigenschaften können sich ändern, aber es sollte nie ein neues Element zurückgegeben werden. Außerdem wird das tabindex-Attribut des zurückgegebenen Elements während des gesamten Lebenszyklus dieses Knotens und des FocusManager überschrieben. Wenn ein Knoten direkt fokussiert werden muss, ohne dass er zuerst über FocusManager fokussiert wird, muss er seinen eigenen Tabindex festlegen. |
getFocusableTree() | Gibt den nächstgelegenen übergeordneten Baum dieses Knotens zurück (in Fällen, in denen ein Baum untergeordnete Bäume hat), der den Baum darstellt, zu dem dieser Knoten gehört. |
onNodeBlur() | Wird aufgerufen, wenn dieser Knoten den aktiven Fokus verliert. Möglicherweise ist der passive Fokus noch aktiv. Es gelten dieselben Einschränkungen wie bei onNodeFocus(). |
onNodeFocus() | Wird aufgerufen, wenn dieser Knoten den aktiven Fokus erhält. Es ist in Ordnung, wenn Implementierungen Sichtbarkeitsmodifikatoren ändern, aber sie sollten Folgendes vermeiden: - DOM-Elemente erstellen oder entfernen (auch über den Renderer oder die Drawer-Komponente). – Fokus über DOM-Aufrufe von focus() oder den FocusManager beeinflussen. |