accesskeys

accesskeyの値は一意である必要があります

manual確度:medium重大度:minoroperable

ページ上の複数の要素が同じaccesskey属性値を共有していないことを確認します。

適用範囲:2つ以上の要素が空でないaccesskey属性を持つ場合に適用されます。そのときにだけ、2つの要素のキーが衝突する可能性があるからです。

期待される結果:ページ上のaccesskeyの値はすべて一意です。accesskeyが重複していると、キーボードショートカットでどの要素が有効になるかが曖昧になります。同じキーを共有する要素のうち、実際にそのキーで到達できるのは1つだけで、どれになるかはブラウザーやプラットフォームによって異なります。

検出結果が報告する内容:

  • accesskey:共有されているキーです(小文字)。
  • duplicateCount:そのキーを共有しているページ上の要素の数です(この要素を含みます)。

これらのdata.detailsのフィールドは、検出結果を読み解き、再現するのに役立ちます。reasonCodeと、出力スキーマで安定と明記された一部のフィールドを除き、安定した契約ではありません。マイナーリリースで名前が変わったり、なくなったりすることがあるため、これらに依存した実装はしないでください。

例

pass
<a href="/a" accesskey="a">A</a>
<a href="/b" accesskey="b">B</a>

ページ上のaccesskeyの値はすべて一意です。

can't tell
<a href="/s1" accesskey="s">S1</a>
<a href="/s2" accesskey="s">S2</a>

2つの要素が同じaccesskeyの値(「s」)を共有しており、多くのブラウザーではどちらが選ばれるか予測できません。

確認方法

このルールが判断できない場合はcantTellを報告し、判断を人に委ねます。ルールが投げかける各質問を、理由コードごとに、答えるための手順とともにここに示します。検出結果にも同じ手順がhowToCheckとして、スキャンの言語で含まれます。出力スキーマを参照してください。

ACCESSKEY_DUPLICATE

  1. レポートに示されたアクセスキーを控え、それを共有しているほかの要素を見つけてください。
  2. そのキーを使ってブラウザーのアクセスキーの組み合わせ(たとえばAltまたはAlt+Shiftとそのキー)を押し、どの要素にフォーカスが移るか、または作動するかを控えてください。
  3. もう一度押し、そのキーを共有する各要素に到達できるか確認してください。

満たす場合:そのキーを持つ各要素にそのキーで到達できるか、重複は意図されたもので害はありません。

満たさない場合:キーに反応するのは要素の1つだけで、ほかの要素にはショートカットで到達できません(ベストプラクティス、WCAG 2.1.1に関連)。

ソースコードを見る