accesskeyにはアクセシビリティが無い

/web/html-css

Note: この記事は、3年以上前に書かれています。Webの進化は速い!情報の正確性は自己責任で判断してください。

accesskey
要素にショートカット・キーを設定する属性
tabindex
Tabキーによるフォーカス移動に順番を定める属性

結論から言えば、accesskey/tabindexにアクセシビリティはない。これは個人的な意見だけど、「高齢者や障害者へのアクセシビリティと確保」というよりは健常者のユーザビリティ(作業性向上)に良いように思います。

というか使わないほうが良いんでない? ...という話。

現状の問題

  • デフォルトのキーバインド(ショートカットキー)と競合してしまう
  • 視覚系Webブラウザは、accesskeyを実行するとsubmitしてしまう
  • これといった規格や業界標準的な取り決めも無い

一番の問題は、デフォルトのキーバインド(ショートカットキー)と競合してしまうこと。特にaccesskeyだと、ブラウザ本来のショートカットが使えなくなってしまう。(基本的にはHTMLの記述を優先するため、accesskey自体は使える)

音声ブラウザやテキストブラウザは、基本操作にキーバインドを割り振ってしまっている。。そしてキーしかない携帯端末での機能障害は、PCのそれと比較にならないくらい致命的。

次に、設定の難しさがある。設定されるキーは作成者によってバラバラ。有効なアクセスキーを明示しているサイトも少ない。デフォルトのキーバインドとの互換性を考えると、使用可能なキーも少ない。

(よく考えられた)tabindexの指定は、作業性向上に大きな役割を果たす ...が、「左上→右下」というデフォルトの移動法に慣れている人は意外に多く、下手に指定すると非常に扱いにくいものとなる。

memo: ま~そもそも、1サイトの独自仕様えさせるのか、てな話な訳ですヨ。

memo: というか、WebコンテンツJISでは触れられてもいない話題だ。

memo: あ、Webサービスならアリかも?

機能の解説(accesskey)

accesskeyはWindowsではAlt、MacではCtrlキーとともに任意のキーを押すことで使用できます。ただしOperaの場合は、「Shift + Esc」。特殊なので使えないと思っている人は多いでしょう。また実行時の挙動にも、ブラウザによって違いが見られます。詳しくは以下。

  • IE-Win → Focus
  • IE-Mac → Activate
  • Opera → Activate
  • Gecko → Activate
  • iCab → Activate

※1 Focus: 選択されるだけ
※2 Activate: 実行される(リンク先に飛ぶ or ボタンを押す)

どれが間違っているかというと、実はどれも正しい。仕様書におけるaccesskeyの言及が曖昧なので、解釈が分かれてる感じ。

Pressing an access key assigned to an element gives focus t the element. The action that occurs when an element receives focus depends on the element. For example, when a user activates a link defined by the A element, the user agent generally follows the link. HTML4 17.11.2

訳: エレメントに割り当てたアクセスキーを押すと、エレメントにフォーカスされる。エレメントがフォーカスされたときの動作は、エレメントによる。たとえばユーザーがa要素によって定義されたリンクを動作させたとき、そのUAは一般的にリンクを辿る。

accesskey実行で直接リンク先に飛ぶ(動作がActivate)ブラウザは、この部分をストレートに解釈していると思われます。とはいえ、「UAAG 1.0」において定義されているように、フォーカスと機能を動作させるということは(基本的には)別モノであり、IE-winはこの考えに則ってaccesskeyによる動作をfocusに留めているのだと思われます。

機能の解説(tabindex)

tabindexは、Tabキーの押下げによって現在の選択領域(フォーカス)を移動する。移動の順序は、初期設定では「左から右」あるいは「上から下」(ソースの記述順?)。tabindex属性は、この移動順番を変更する。

tabindexは視覚系ブラウザではほぼ問題なく機能する。しかしLynx(テキストブラウザ)では使用できない。そもそもTabキーのない携帯端末でも使用できない。

また、指定範囲外の挙動(例えば1~6のtabindexを指定したとして、Tab7回目以後の動作)はブラウザによって異なる。

Note: スパム対策が面倒なので、コメント投稿を廃止しました。以前のコメントは残します。
ご意見・ご要望はtwitter@sigwygかはてブコメントにて。