禁止されている ARIA 属性
Silktide は、ページ上のすべての ARIA 属性が、その要素のロールで実際にサポートされているかをチェックします。ロールでサポートされていない属性や、ARIA 標準にまったく含まれていない属性はブラウザーによって無視されるため、作成者が意図した動作がまったく発生しません。
<!-- 問題: ボタン上では aria-checked は意味を持ちません -->
<button aria-checked="true">Bold</button>
<!-- 修正: 必要な状態をサポートするロールを使用します -->
<button role="switch" aria-checked="true">Bold</button>
重要な理由
各 ロールは、特定の状態とプロパティのセットをサポートしており、そのセット外のものはブラウザーによって破棄されます。その結果、コードレビューではページが正しく見える一方で、 の利用者には何も伝わりません。状態が読み上げられないトグルや、説明が読み上げられない要素が発生します。このカテゴリでは、aria-lable のようなスペルミスのある属性も検出します。これは、作成者がラベルが存在すると考えているにもかかわらず、 の利用者にはラベルがまったく提供されないため、最も深刻なケースです。
修正方法
- スペルミスのある属性名を修正します(
aria-lableはaria-labelに、aria-labeledbyはaria-labelledbyに修正します)。 - 属性が正しいもののサポートされていない場合は、その属性をサポートするロールに要素のロールを変更します。または、ネイティブの 要素ですでにその動作が提供されていないかを検討します。
- 属性が有用な動作を何も提供しない場合は、削除します。
Silktide によるテスト方法
aria-属性を少なくとも 1 つ持つページ上のすべての要素を見つけます。- その要素で有効な ARIA 属性のセットを判定します。これには、どこでも機能するグローバル属性(
aria-labelやaria-hiddenなど)と、その要素のロールでサポートされている属性が含まれます。 - ARIA 1.2 に含まれていない属性名(通常はスペルミス)を報告します。
- 認識されている属性が、その要素のロールでサポートされていない要素上で使用されている場合、または要素にないロールを必要とする場合に報告します。
非推奨の属性は 非推奨の ARIA 属性 で個別に報告され、属性値は 無効な ARIA 属性値 によって検証されます。
トラブルシューティング
テストでは属性が機能します
一部のスクリーンリーダーとブラウザーの組み合わせでは、標準外の組み合わせが許容されることがありますが、別の組み合わせでは破棄されます。標準に準拠することで、テストできない支援技術でも動作が予測可能になります。
検出結果があるはずなのに、このチェックで何も報告されません
ARIA のテストは、ウェブサイトごとに無効にできます。ウェブサイトの 詳細設定 を確認してください。