<a>要素のaccesskey属性についてはHTML&CSS入門の参考資料で触れましたが、個人的には出来るだけ使って欲しい属性です。制作者はウェブを見ている時にマウスが故障して先に進みにくくなったと言う経験があり、それ以来PC版ではキーボードアクセスを出来るようにしていきました。
操作性に難点がある携帯電話でも、ダイヤルボタンをアクセスキーとして活用することで、操作性が大きく向上します。
ここでは、accesskey属性を使う上での理念を挙げておきます。必ずしも現実とは懸け離れているものですが(実際に制作者も実現していないものばかりですが)、このような理念があると言うことは知っていても損は無い筈です。
PC向けのウェブブラウザではデフォルトでaccesskey属性で指定したキーをリンクの横に表示するような事はしません。このため、多くのウェブでは例えばこのようにアクセスキーを明示する事でしょう。
<a accesskey="A" href="../index.html">[A] 表紙。</a>しかし、本来ならaccesskey属性で指定されたアクセスキーは、わざわざ書かなくても自動的に表示されるようにすべきものです。実際、一部の携帯電話では自動的にアクセスキーが明示されるものもありますし、PC向けのCSSにもそのような目的に使えるプロパティが制定されています。
しかしながら、そのプロパティを最もシェアの高いインターネットエクスプローラが実装していない為、わざわざアクセスキーを明示しないとインターネットエクスプローラで見た場合にアクセスキーが表示されない、すなわち分からないと言う事態になってしまいます。
参考までに、accesskey属性の値をリンクの前に表示させるには、CSSでは以下のような定義をすればよいことになっております。
a[accesskey]:before{content: "[" attr(accesskey) "]";}
[属性名]」は、当該要素に当該属性が当てられている場合に限り適用すべきというもの(属性セレクタ)です。:before」は当該要素の本体の前に表示させるスタイルを指定する、擬似要素と呼ばれるセレクタです。もちろん、逆に要素の後ろに表示させる為の「:after」擬似要素もあります。contentプロパティは、:before及び:after擬似要素セレクタの場合に限り有効なプロパティで、実際に表示させる文字列を指定します(複数書けばそれらを左から順に繋げたものとなります)。もちろん、この文字列に対して通常のスタイルを指定することも可能で、その場合はこのスタイル定義に必要なプロパティを書いていけば良いだけです。
"」か「'」で囲んでおくことになっております。このため「"」「'」を表現したい場合はその前に「\」をつけることで区別します(「\"」など)。「\」を表現したい場合も「\\」と書くことになります。attr(属性名)」は属性の値をそのまま適用すると言う演算子です。例えば「attr(accesskey)」とすると、accesskey属性の値をそのまま適用することになります。before:」「after:」擬似要素及び「attr(属性名)」はインターネットエクスプローラの他携帯電話でも省略されており、使うことは出来ません。accesskey属性の値をブラウザが自動的に表示すべきなのは、HTML文書にアクセスキーを書いているとHTML文書をあらゆる端末で利用するときに問題が生じ得るからです。
例えばウェブ閲覧機能の付いた電話(携帯電話か固定電話かは問わない)の場合、アクセスキーにはダイヤルに用意されている数字と僅かな記号しか使えません。そのような端末でPC向けのHTML文書を表示させた場合、英字などが指定されているリンクではアクセスキーの表示は意味がありません。
アクセスキーを表示さえしなければ、端末が利用出来るキーに関してのみ自動的に表示させ、無効なキーを指定している要素ではその属性を無効と見なす事が可能です。
電話に限らず、例えばウェブ閲覧機能の付いたTVなら、TVのリモコンに付いているチャンネルボタンを数字キーに見立てて利用することも出来るでしょうが、他の文字や記号はリモコンには付いていない可能性があります。
この様な事から、PCに限定したようなアクセスキーの表示は好ましくありません。
現実面を見ると、前述の通りインターネットエクスプローラにはaccesskey属性の値を表示させるCSSの機能がありません。このため、CSSによるアクセスキー表示を諦めざるを得ない面があります。
ブラウザ側がキーを表示できるようになるまでは、利用しているキーの情報を表示するようにすべしとあります。現状ではインターネットエクスプローラがまだ対応していないので、表示すべきと言うことでしょう。
また、ブラウザが独自にアクセスキーを定めていて、それがHTMLでのaccesskey属性の定義と衝突する可能性もあります。
もちろん、accesskeyをサポートするブラウザはHTMLでのaccesskey属性の定義を優先するように出来ていますし、そうしなければならない筈です(個人的にはブラウザのアクセスキーとウェブのアクセスキーを別々の入力方法(「ブラウザ操作は○○キーを押しながら入力するが、ウェブに対しては単独で機能するようにする」など)にするのが望ましいと思います)。