Schnittstelle „IFocusableNode“
Stellt alles dar, was den Eingabefokus haben kann.
Unterschrift:
export interface IFocusableNode
Methoden
Method | Beschreibung |
---|---|
canBeFocused() | Gibt an, ob dieser Knoten fokussiert werden kann. Wenn dies zu „false“ führt, werden keine der anderen Methoden von IFocusableNode aufgerufen. Besondere Vorsicht ist geboten, wenn die Implementierungen dieser Funktion ihren Rückgabewert während der Lebensdauer des Knotens dynamisch ändern, da sich bestimmte Umgebungsbedingungen auf die Fokussierbarkeit des DOM-Elements dieses Knotens auswirken können (z. B. ob das Element einen positiven oder nullwertigen Tabindex hat). Wenn der Wert von „wahr“ zu „falsch“ geändert wird, während der Knoten den Fokus hat, ändert sich dadurch nicht sofort der aktuelle Fokus des Knotens oder der interne Zustand des FocusManagers. Dies kann dazu führen, dass einige Funktionen des Knotens später aufgerufen werden, wenn der Fokus aufgehoben wird, da er zuvor als fokussierbar betrachtet wurde. Implementierungen sollten hier in der Regel immer „wahr“ zurückgeben, es sei denn, es gibt Umstände, unter denen dieser Knoten aus Gründen des Fokus übersprungen werden sollte. Beispiele hierfür sind deaktivierte, schreibgeschützte oder rein visuelle Elemente oder ein Knoten ohne visuelle Darstellung, der diese Schnittstelle implementieren muss (z.B. aufgrund einer übergeordneten Schnittstelle, die sie erweitert). Berücksichtigen Sie die Best Practices für Barrierefreiheit, wenn Sie festlegen, ob ein Knoten fokussierbar sein soll. Selbst deaktivierte und schreibgeschützte Elemente sind oft relevant, um Nutzern einen organisatorischen Kontext zu bieten, insbesondere bei der Verwendung eines Screenreaders. |
getFocusableElement() | Gibt das DOM-Element zurück, das explizit angefordert werden kann, um den Fokus zu erhalten. WICHTIG: Dieses Element sollte auf der Seite visuell sichtbar sein, da es sowohl explizit fokussiert wird als auch sein Stil je nach aktuellem Fokusstatus (d.h. unscharf, aktiv fokussiert und passiv fokussiert) geändert wird. Dem Element wird einer von zwei Stilen zugewiesen. Wenn kein Stil zugewiesen ist, ist das Element unscharf/nicht fokussiert: - blocklyActiveFocus - blocklyPassiveFocus Für das zurückgegebene Element muss außerdem eine gültige ID angegeben werden, die auf der gesamten Seite eindeutig ist. Wenn keine eindeutige ID vorhanden ist, kann es passieren, dass beim Versuch, den Fokus auf einen Knoten zu setzen (z. B. per Mausklick), ein anderer Knoten mit derselben ID vom FocusManager ausgewählt wird. Das zurückgegebene Element muss außerdem einen negativen Tabindex haben, da der Fokusmanager seinen Tabindex selbst verwaltet und ein Tabindex vorhanden sein muss, damit das Element im DOM fokussiert werden kann. Das zurückgegebene Element muss sichtbar sein, wenn der Knoten über FocusManager.focusNode() oder FocusManager.focusTree() fokussiert wird. Es ist zulässig, dass ein Element ausgeblendet wird, bis onNodeFocus() aufgerufen wird, oder durch einen Aufruf von onNodeBlur() ausgeblendet wird. Das tatsächlich zurückgegebene Element ändert sich normalerweise nicht während der Lebensdauer des Knotens. Das heißt, seine Eigenschaften können sich ändern, aber es sollte nie ein neues Element zurückgegeben werden. |
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. Für diese Funktion gelten dieselben Implementierungseinschränkungen wie für onNodeFocus(). |
onNodeFocus() | Wird aufgerufen, wenn dieser Knoten den aktiven Fokus erhält. Es ist in Ordnung, wenn Implementierungen Sichtbarkeitsmodifikatoren ändern, aber Folgendes sollte vermieden werden: – Der Fokus wird über DOM-focus()-Aufrufe oder den FocusManager beeinflusst. |