ホームページ >ウェブフロントエンド >htmlチュートリアル >HTML フォーカスとキーボード イベント_html/css_WEB-ITnose
いわゆるフォーカスは、ユーザーが現在操作しているオブジェクトであり、ブラウザーの要素、タブ、ウィンドウなどです。たとえば、入力ボックスをマウスでクリックすると、入力ボックスがフォーカスになります。キーボードの Tab キーを使用すると、フォーカスをブラウザの別の要素または他の領域に移動できます。マウスとキーボードの両方を使用して、フォーカスを移動したり、フォーカスされた要素を編集したりできます。
フォーカス要素同時に 1 つの要素のみがドキュメントのフォーカスになれます 。このフォーカス要素には JavaScript を使用してアクセスできます:
document.activeElement;
フォーカスとなる要素がない場合、デフォルトはbody 要素を activeElement として指定します。フォーカスとなる要素はCSSの:focus擬似クラスに相当します。
ただし、すべての要素をフォーカスできるわけではなく、フォーカス可能な領域を持つ DOM アンカーのみをフォーカスと呼ぶことができます:
フォーカス可能な領域は、要素、要素の一部、またはユーザー エージェントによって管理される場合があります。このアンカーは Node オブジェクトであり、Node オブジェクトの位置は DOM 内のフォーカス可能な領域の位置です。現在、フォーカス可能エリア API はこのアンカーを使用してフォーカス可能エリアを操作します。
すべてのノードがフォーカス エリアを表すことができるわけではありません。ノードがフォーカス エリアになるには、いくつかの条件を満たす必要があります。次の表は、いくつかの一般的なフォーカス可能な領域とその DOM アンカーをリストしたものです:
フォーカス可能な領域 | DOM アンカー |
には tabindex フォーカス フラグがあり、無効な属性のない要素 | 要素自体 |
イメージマップ内の領域のグラフィック領域 | img要素 |
などのユーザーエージェントによって提供される利用可能なフォーカス子コントロールput[type =number] 生成される上下のボタン | 子コントロールを生成する要素 |
要素のスクロール領域 | スクロール領域を生成する要素 |
閲覧コンテキスト内のドキュメントのビューポート。たとえば、iframe によって生成されたウィンドウ。 | ビューポートが生成されるドキュメント |
キーボードの Tab キーを使用して、現在フォーカスされている要素を順番に切り替えます。この切り替え順序に影響を与える属性は、要素の tabindex 属性です。この属性の値の範囲は 0 ~ 32767 です。値が負の場合は、フォーカス マークがなく、切り替えられないことを意味します。
ただし、tabindex が設定されているすべての要素を tab キーを使用してフォーカスに切り替えることができるわけではありません。まず、tabindex の値を負にすることはできず、disabled 属性を持つこともできません。さらに、この要素には対応するフォーカス可能な領域があり、tabindex 属性をサポートする必要があります。 HTML4 では、FORM フォーム内の要素 a、area、button、input、object、select、textarea のみが tabindex 属性をサポートすることを規定しています。
tabindex 属性が明示的に設定されていない要素は、Tab キーを使用してフォーカスに切り替えることができません。いいえ、要素に tabindex focus タグがあれば可能です。 W3C は、ユーザー エージェントが次の要素に tabindex フォーカス タグを自動的に設定することを推奨しています:
3. 要素の tabindex が 0 であるか、tabindex が設定されていないか、または tabindex が有効な整数ではありません (後者の 2 つは同等です)。 tabindex=0) に、ドキュメント内の要素の出現順序に従って切り替えます。
focus & focusin 、blur & focusoutフォーカスされた要素には document.activeElement を通じてアクセスできます。
フォーカスも、要素がフォーカスを取得しようとしているときにトリガーされるイベントです。フォーカスとの主な違いは、フォーカス イベントにはバブリング ステージがないことです。 focusin イベントにはバブリング ステージがあるため、この要素とそのサブ要素がいつフォーカスを取得するかを監視するために使用できます。同様に、ブラー イベントにはバブリング ステージがありませんが、フォーカスアウトにはバブリング ステージがあります。
互換性:
Firefox は focusin および focusout イベントをサポートしません。
Chrome では、フォーカスを取得する実行順序: onfocus、onfocusin、フォーカスを失う実行順序: onblur、onfocusout。 IE6、IE7、IE8、IE9、IE10 の場合、フォーカスを取得する実行順序は onfocusin、onfocus、フォーカスを失う実行順序は onfocusout、onblur です。
キーボード イベントDOM には、常にフォーカスのある要素をターゲットとするいくつかのキーボード イベントがあります。
Keypress、keydown、keyup の違い