blockly > IFocusableNode

Interfejs IFocusableNode

Reprezentuje wszystko, co może mieć fokus wejściowy.

Podpis:

export interface IFocusableNode 

Metody

Metoda Opis
canBeFocused()

Wskazuje, czy ten węzeł może być aktywny. Jeśli ta funkcja zwróci wartość false, żadna z pozostałych metod IFocusableNode nie zostanie wywołana.

Pamiętaj, że jeśli implementacje tej funkcji dynamicznie zmieniają wartość zwracaną w trakcie istnienia węzła, należy zachować szczególną ostrożność, ponieważ niektóre warunki środowiskowe mogą wpływać na możliwość uzyskania fokusu przez element DOM tego węzła (np. czy element ma dodatni lub zerowy indeks tablicy). Zmiana wartości z prawdy na fałsz, gdy węzeł jest aktywny, nie spowoduje natychmiastowej zmiany bieżącego stanu aktywności węzła ani stanu wewnętrznego klasy FocusManager, a tym samym może spowodować, że niektóre funkcje węzła zostaną wywołane później, gdy węzeł utraci aktywność (ponieważ w momencie, gdy był aktywny, był uważany za element, który może być aktywny).

Implementacje powinny zwykle zwracać wartość „true”, chyba że istnieją okoliczności, w których ten węzeł powinien zostać pominięty ze względu na kwestie związane z ogniskowaniem. Może to być np.wyłączenie, tryb tylko do odczytu, czysto wizualna dekoracja lub węzeł bez wizualnej reprezentacji, który musi implementować ten interfejs (np. z powodu rozszerzania go przez interfejs nadrzędny). Określając, czy węzeł powinien być możliwy do wybrania, pamiętaj o sprawdzonych metodach dotyczących ułatwień dostępu, ponieważ nawet wyłączone i tylko do odczytu elementy często są istotne dla zapewnienia użytkownikom kontekstu organizacyjnego (zwłaszcza podczas korzystania z czytnika ekranu).

getFocusableElement()

Zwraca element DOM, który może być wyraźnie wymagany do otrzymania fokusu.

WAŻNE: pamiętaj, że ten element powinien być widoczny na stronie, ponieważ będzie on jawnie zaznaczany, a jego styl będzie się zmieniać w zależności od jego bieżącego stanu zaznaczenia (np. rozmyty, aktywnie zaznaczony i pasywnie zaznaczony). Element będzie miał przypisany jeden z 2 stylów (brak stylu oznacza rozmycie lub brak zaznaczenia): - blocklyActiveFocus - blocklyPassiveFocus

Zwrócony element musi też mieć określony prawidłowy identyfikator, który powinien być unikalny na całej stronie. Brak odpowiednio unikalnego identyfikatora może spowodować, że próba skupienia się na jednym węźle (np. przez kliknięcie myszą) doprowadzi do skupienia się przez FocusManager na innym węźle o tym samym identyfikatorze.

Zwrócony element musi być widoczny, jeśli węzeł kiedykolwiek uzyska fokus za pomocą funkcji FocusManager.focusNode() lub FocusManager.focusTree(). Element może być ukryty do momentu wywołania funkcji onNodeFocus() lub stać się ukryty po wywołaniu funkcji onNodeBlur().

Oczekuje się, że rzeczywisty zwrócony element nie zmieni się przez cały okres istnienia węzła (czyli jego właściwości mogą się zmieniać, ale nigdy nie powinien być zwracany nowy element). Zwrócony element będzie miał też nadpisywany atrybut tabindex przez cały cykl życia tego węzła i klasy FocusManager.

Jeśli węzeł wymaga możliwości bezpośredniego ustawienia na nim fokusu bez wcześniejszego ustawienia fokusu za pomocą klasy FocusManager, musi ustawić własny indeks tabulacji.

getFocusableTree() Zwraca najbliższe drzewo nadrzędne tego węzła (w przypadku, gdy drzewo ma pod sobą odrębne drzewa), które reprezentuje drzewo, do którego należy ten węzeł.
onNodeBlur()

Wywoływana, gdy ten węzeł traci aktywny fokus. Może nadal mieć pasywną ostrość.

Ma takie same ograniczenia implementacji jak onNodeFocus().

onNodeFocus()

Wywoływana, gdy ten węzeł otrzymuje aktywny fokus.

Pamiętaj, że implementacje mogą zmieniać modyfikatory widoczności, ale powinny unikać tych działań: – tworzenia lub usuwania elementów DOM (w tym za pomocą renderera lub komponentu). – wpływanie na zaznaczenie za pomocą wywołań DOM focus() lub klasy FocusManager;