7.3.1 シーケンシャル・フォーカス・ナビゲーションと tabindex 属性
tabindex コンテンツ属性は、要素がフォーカス可能かどうかを、そして、シーケンシャル・フォーカス・ナビゲーションを使って該当の要素に移動できるかどうかを、そして、シーケンシャル・フォーカス・ナビゲーションのための要素の相対的な順番を指定します。"タブ・インデックス" という名前は、フォーカス可能な要素を渡り動くため、一般的に "タブ" キーが使われていることに由来しています。"タビング" という用語は、シーケンシャル・フォーカス・ナビゲーションを使って到達可能でフォーカス可能な要素を渡り動くことを意味します。
tabindex 属性は、もし指定されれば、その値は妥当な整数でなければいけません。
この属性が指定されたら、整数パース規則を使ってパースしなければいけません。属性値は次の意味を持ちます:
- 属性が省略された、または、値をパースしたらエラーになった場合
-
ユーザーエージェントは、該当の要素がフォーカス可能かどうか、もしそうなら、その要素がシーケンシャル・フォーカス・ナビゲーションを使って到達できるかどうか、そして、どんな相対的順番でフォーカスするのかについては、プラットフォームの慣習に従って決定するべきです。
- 値が負の整数だった場合
-
ユーザーエージェントは、該当の要素をフォーカスできるようにしなければいけません。しかし、シーケンシャル・フォーカス・ナビゲーションを使って到達できるようにすべきではありません。
- 値がゼロだった場合
-
ユーザーエージェントは、該当の要素をフォーカスできるようにしなければいけません。そしてシーケンシャル・フォーカス・ナビゲーションを使って到達できるようにすべきです。そして、プラットフォームの慣習に従って、その要素の相対的順番を決定すべきです。
- 値がゼロより大きかった場合
-
ユーザーエージェントは、該当の要素がフォーカスできるようにしなければいけません。そして、シーケンシャル・フォーカス・ナビゲーションを使って到達できるようにするべきです。そして、次の通りとなるように、シーケンシャル・フォーカス・ナビゲーションの順番に該当要素を位置づけるべきです:
tabindex属性が省略されているか、または、パース時に値がエラーとなるフォーカス可能な要素の前tabindex属性がゼロ以下の値となっているフォーカス可能な要素の前tabindex属性がゼロより大きくて該当要素のtabindex属性の値より小さい値となっている要素の後tabindex属性が該当の要素のtabindex属性の値に等しいが、該当の要素よりドキュメント内でツリー順序が手前となる要素の後tabindex属性が該当の要素のtabindex属性の値に等しいが、該当の要素よりドキュメント内でツリー順序が後ろとなる要素の前tabindex属性が該当の要素のtabindex属性の値より大きい要素の前
前述の tabindex 属性の定義で、該当の要素がフォーカス可能であると定義されれば、その要素は特別フォーカス可能といいます。
特別フォーカス可能だが、アクティベーション・ビヘイビアを持たない要素は、何もしないアクティベーション・ビヘイビアを持つことになります。
これは、tabindex 属性によってフォーカス可能になった要素は、non-mouse activation への応答において click イベントを発出することを意味します(例:その要素がフォーカスされて"enter" キーを押す)。
tabIndex IDL 属性は、tabindex コンテンツ属性の値を反映しなければいけません。このデフォルト値は、フォーカス可能な要素なら 0 となり、フォーカス可能でない要素なら -1 になります。