accesskey 属性

7.4 キーボード・ショートカットの割り当て

7.4.1 はじめに

このセクションは非規定です。

アクティベートまたはフォーカスできる要素には、accesskey 属性を使えば、その要素をアクティブにするためのキーの組み合わせをひとつ割り当てることができます。

正確なショートカットは、ユーザーのキーボードに関する情報や、そのプラットフォームにはどんなショートカットがすでに存在しているのか、他にどんなショートカットがそのページに指定されているのか、といった基き、accesskey 属性に提供される情報を使って、ユーザーエージェントによって決められます。

関連のキーボード・ショートカットが多様な入力デバイスで確実に利用できるようにするために、ウェブ制作者は accesskey 属性に複数の選択肢を提供することができます。

それぞれの選択肢は、英数字といったひとつの文字から構成されます。

ユーザーエージェントは、キーボード・ショートカットのリストをユーザーに提供することができます。しかし、ウェブ制作者もそうすることが推奨されます。accessKeyLabel IDL 属性は、ユーザーエージェントによって割り当てられた実際のキーの組み合わせを表す文字を返します。

7.4.2 accesskey 属性

すべての HTML 要素には、accesskey コンテンツ属性をセットすることができます。accesskey 属性の値は、ユーザーエージェントがその要素をアクティベートまたはフォーカスするキーボード・ショートカットを作るための参考として使われます。

指定されたら、その値は、大文字・小文字を区別して順序付けスペース区切り固有トークンセットでなければいけません。 それぞれの値は、Unicode のコード・ポイント長ひとつ分でなければいけません。

次の例では、そのサイトに慣れ親しんだキーボード・ユーザーが関連のページへもっと素早くリンクをたどることができるよう、いろいろなリンクにアクセスキーが与えられています 。

<nav>
 <p>
  <a title="Consortium Activities" accesskey="A" href="/Consortium/activities">Activities</a> |
  <a title="Technical Reports and Recommendations" accesskey="T" href="/TR/">Technical Reports</a> |
  <a title="Alphabetical Site Index" accesskey="S" href="/Consortium/siteindex">Site Index</a> |
  <a title="About This Site" accesskey="B" href="/Consortium/">About Consortium</a> |
  <a title="Contact Consortium" accesskey="C" href="/Consortium/contact">Contact</a>
 </p>
</nav>

次の例では、検索フィールドに 2 つのアクセスキー "s" と "0" がこの順番で与えられています。フルキーボード装備のデバイスであれば、ユーザーエージェントは Ctrl+Alt+S をショートカット・キーとして採用するでしょう。一方、テンキーしか装備していない小さなデバイスなら、ユーザーエージェントは 0 だけを採用するでしょう。

<form action="/search">
 <label>Search: <input type="search" name="q" accesskey="s 0"></label>
 <input type="submit">
</form>

次の例では、ボタンにアクセスキーが記述されています。そして、ユーザーエージェントが選択したキーの組み合わせを知らせるために、スクリプトを使って、そのボタンのラベルをアップデートしようとしています。

<input type=submit accesskey="N @ 1" value="Compose">
...
<script>
 function labelButton(button) {
   if (button.accessKeyLabel)
     button.value += ' (' + button.accessKeyLabel + ')';
 }
 var inputs = document.getElementsByTagName('input');
 for (var i = 0; i < inputs.length; i += 1) {
   if (inputs[i].type == "submit")
     labelButton(inputs[i]);
 }
</script>

あるユーザーエージェントでは、ボタンのラベルは "Compose (⌘N)" となるかもしれません。別のユーザーエージェントでは、"Compose (Alt+⇧+1)" となるかもしれません。ユーザーエージェントがキーを割り当てることができないなら、"Compose" だけとなるでしょう。正確な文字列は、割り当てアクセスキーが何かに依存します。そして、ユーザーエージェントがキーの組み合わせをどうやって表すかにも依存します。

7.4.3 処理モデル

要素の割り当てアクセス・キーは、次の通り、要素の accesskey コンテンツ属性からもたらされるキーの組み合わせとなります:

  1. 要素に accesskey 属性がなければ、下記のフォールバック手順にスキップします。

  2. そうでなければ、ユーザーエージェントは、属性値をスペース区切りで分割しなければいけません。その結果となるトークンを keys とします。

  3. keys のそれぞれの値に対して、その属性値に現れる順番で、次の副手順を実行します:

    1. 値が Unicode コード・ポイント長ひとつ分でないなら、この値に対するこれらの残りの手順をスキップします。

    2. 値がシステムのキーボード上のキーに対応しないなら、この値に対するこれらの残りの手順をスキップします。

    3. ユーザーエージェントが、その属性に指定された値に対応するキーを伴い、ショートカットとして使うことができる修飾キーの組み合わせを見つけることができたなら、ユーザーエージェントは、そのキーの組み合わせを、その要素の割り当てアクセス・キーとして割り当てることができます。これらの手順を中止します。

  4. フォールバック: オプションで、ユーザーエージェントは、その要素の割り当てアクセス・キーとして、その選択のキーの組み合わせを割り当てることができます。そのときは、これらの手順を中止します。

  5. この手順に到達したら、その要素は割り当てアクセス・キーを持たないことになります。

ユーザーエージェントが要素に対してアクセス・キーを選択し割り当てたら、ユーザーエージェントは、accesskey 属性が変更されたり、該当の要素が別の Document に移動されない限り、その要素の割り当てアクセス・キーを変更するべきではありません。

ユーザーが要素の割り当てアクセス・キーに対応するキーの組み合わせを押すとき、その要素がコマンドを定義しており、そのコマンドの Hidden 状態が false (visible) で、そのコマンドの Disabled 状態が false (enabled) なら、ユーザーエージェントはそのコマンドのアクションを起動しなければいけません。

ユーザーエージェントは、accesskey 属性を持つ要素を別の方法でも見せることができます。例えば、特定のキーの組み合わせに対応してメニューを見せるなどです。

accessKey IDL 属性は、accesskey コンテンツ属性を反映しなければいけません。

accessKeyLabel IDL 属性は、要素の割り当てアクセス・キーがあれば、それを表す文字列を返さなければいけません。なければ、空の文字列を返さなければいけません。


※ 原文:http://www.w3.org/TR/2011/WD-html5-20110113/editing.html#assigning-keyboard-shortcuts