Интерфейс IFocusableNode
Представляет собой все, что может иметь фокус ввода.
Подпись:
export interface IFocusableNode
Методы
Метод | Описание |
---|---|
canBeFocused() | Указывает, допускает ли этот узел фокус. Если возвращается значение false, то ни один из других методов IFocusableNode не будет вызван. Обратите внимание, что следует соблюдать особую осторожность, если реализации этой функции динамически изменяют возвращаемое значение в течение жизненного цикла узла, поскольку определённые условия среды могут повлиять на фокусируемость DOM-элемента этого узла (например, положительный или нулевой индекс табуляции). Кроме того, изменение значения с true на false, пока узел удерживает фокус, не приведёт к немедленному изменению текущего фокуса узла и внутреннего состояния FocusManager, и, таким образом, некоторые функции узла могут быть вызваны позже, когда он потеряет фокус (поскольку на момент фокусировки он считался фокусируемым). Реализации, как правило, всегда должны возвращать значение true, за исключением случаев, когда этот узел следует пропустить из соображений фокусировки. Примерами могут служить отключение, доступность только для чтения, чисто визуальное оформление или отсутствие визуального представления узла, который должен реализовывать этот интерфейс (например, из-за расширения его родительским интерфейсом). При определении того, должен ли узел быть фокусируемым, учитывайте рекомендации по обеспечению доступности, поскольку даже отключенные и доступные только для чтения элементы часто важны для предоставления пользователям организационного контекста (особенно при использовании программы чтения с экрана). |
получитьFocusableElement() | Возвращает элемент DOM, который можно явно запросить для получения фокуса. ВАЖНО: Обратите внимание, что этот элемент должен визуально присутствовать на странице, поскольку он будет явно сфокусирован, а его стиль будет меняться в зависимости от текущего состояния фокуса (то есть размыто, активно сфокусирован и пассивно сфокусирован). К элементу будет прикреплён один из двух стилей (отсутствие стиля означает размытость/отсутствие фокуса): - blocklyActiveFocus - blocklyPassiveFocus Возвращаемый элемент также должен иметь действительный идентификатор, уникальный для всей страницы. Отсутствие уникального идентификатора может привести к тому, что попытка установить фокус на одном узле (например, щелчком мыши) приведет к тому, что FocusManager переключит фокус на другой узел с тем же идентификатором. Возвращаемый элемент должен быть видимым, если узел когда-либо фокусируется с помощью FocusManager.focusNode() или FocusManager.focusTree(). Элемент может быть скрыт до вызова onNodeFocus() или стать скрытым с помощью вызова onNodeBlur(). Ожидается, что фактически возвращаемый элемент не изменится на протяжении всего жизненного цикла узла (то есть его свойства могут измениться, но новый элемент никогда не должен быть возвращён). Кроме того, возвращаемый элемент будет иметь перезаписанный tabindex на протяжении всего жизненного цикла этого узла и FocusManager. Если узлу требуется возможность фокусироваться напрямую, без предварительного фокусирования через FocusManager, то он должен установить свой собственный индекс табуляции. |
getFocusableTree() | Возвращает ближайшее родительское дерево данного узла (в случаях, когда дерево имеет отдельные деревья ниже), представляющее дерево, к которому принадлежит этот узел. |
onNodeBlur() | Вызывается, когда узел теряет активный фокус. Он может всё ещё иметь пассивный фокус. Имеет те же ограничения реализации, что и onNodeFocus(). |
onNodeFocus() | Вызывается, когда данный узел получает активный фокус. Обратите внимание, что реализации могут изменять модификаторы видимости, но им следует избегать следующего: - Создание или удаление элементов DOM (в том числе с помощью рендерера или drawer). - Влияние на фокус с помощью вызовов DOM focus() или FocusManager. |