blockly > IFocusableNode

IFocusableNode インターフェース

入力フォーカスを持つことができるものを表します。

署名:

export interface IFocusableNode 

メソッド

メソッド 説明
canBeFocused()

このノードがフォーカスを許可するかどうかを示します。これが false を返すと、他の IFocusableNode メソッドは呼び出されません。

この関数の実装でノードのライフサイクル全体にわたって戻り値を動的に変更する場合は、特別な注意が必要です。特定の環境条件がこのノードの DOM 要素のフォーカス可能性に影響する可能性があるためです(要素の tabindex が正の値か 0 かなど)。また、ノードがフォーカスを保持している間に値を true から false に変更しても、ノードの現在のフォーカスや FocusManager の内部状態はすぐには変更されません。そのため、フォーカスが外れたときにノードの関数の一部が後で呼び出される可能性があります(フォーカスが当たっているときはフォーカス可能と見なされていたため)。

通常、実装は、フォーカスを考慮する際にこのノードをスキップすべき状況がない限り、常に true を返す必要があります。たとえば、無効、読み取り専用、純粋な視覚的装飾、またはこのインターフェースを実装する必要がある視覚的表現のないノード(親インターフェースが拡張しているためなど)が該当します。ノードをフォーカス可能にするかどうかを判断する際は、アクセシビリティに関するベスト プラクティスを念頭に置いてください。無効な要素や読み取り専用の要素であっても、ユーザーに組織のコンテキストを提供するために(特にスクリーン リーダーを使用している場合)関連性があることがよくあります。

getFocusableElement()

フォーカスを受け取るように明示的にリクエストできる DOM 要素を返します。

重要: この要素は、明示的にフォーカスされ、現在のフォーカス状態(ぼかし、アクティブなフォーカス、パッシブなフォーカス)に応じてスタイルが変更されるため、ページ上に視覚的に表示されることが想定されています。要素には、次の 2 つのスタイルのいずれかが適用されます(スタイルがない場合は、ぼかし/フォーカスなしを示します)。- blocklyActiveFocus - blocklyPassiveFocus

返される要素には有効な ID が指定されている必要があり、この ID はページ全体で一意である必要があります。一意の ID が適切に設定されていないと、1 つのノードにフォーカスしようとした(マウスのクリックなど)結果、同じ ID を持つ別のノードが FocusManager によってフォーカスされる可能性があります。

返された要素は、FocusManager.focusNode() または FocusManager.focusTree() を介してノードがフォーカスされた場合に表示される必要があります。onNodeFocus() が呼び出されるまで要素を非表示にしたり、onNodeBlur() の呼び出しで非表示にしたりすることは許可されています。

返される実際の要素は、ノードの存続期間中は変更されないことが想定されています(つまり、プロパティは変更できますが、新しい要素が返されることはありません)。また、返された要素の tabindex は、このノードと FocusManager のライフサイクル全体で上書きされます。

FocusManager を介して最初にフォーカスされることなく、直接フォーカスされる機能をノードで必要とする場合は、独自のタブ インデックスを設定する必要があります。

getFocusableTree() このノードの最も近い親ツリー(ツリーの下に個別のツリーがある場合)を返します。これは、このノードが属するツリーを表します。
onNodeBlur()

このノードがアクティブなフォーカスを失ったときに呼び出されます。まだパッシブ フォーカスが設定されている可能性があります。

これは、onNodeFocus() と同じ実装上の制限があります。

onNodeFocus()

このノードがアクティブなフォーカスを受け取ったときに呼び出されます。

実装で可視性修飾子を変更しても問題ありませんが、次のことは避ける必要があります。- DOM 要素の作成または削除(レンダラまたはドロワー経由を含む)。- DOM の focus() 呼び出しまたは FocusManager を介してフォーカスに影響する。