コンテンツに移動
Silktideヘルプ

重複した ID

Silktide は、同じ id 値が複数の要素に使用されているページを検出します。ページ内では ID は一意でなければなりません。ID を参照するもの(フォームラベル、ARIA の関係、ページ内リンクなど)は、重複した ID のうち 1 つしか見つけられないためです。

<!-- 2 つの入力欄が id="name" を共有しています。それぞれのラベルはどのフィールドを説明しているのでしょうか? -->
<label for="name">氏名</label>
<input id="name">

<label for="name">会社名</label>
<input id="name">

重要な理由

は、関連する要素を結び付けるために ID 参照に依存します。 ID が重複していると、 はフォームフィールドに誤ったラベルを読み上げたり、ラベルをまったく読み上げなかったりする可能性があります。上の例では、両方のフィールドが「氏名」と読み上げられる可能性があるため、ユーザーが会社名の欄に自分の氏名を入力してしまいます。同じ問題は、aria-labelledby や aria-describedby などの 属性や、#id に移動するページ内リンクにも影響します。

修正方法

  1. 重複している ID の名前を変更し、ページ上のすべての id が一意になるようにします。また、それらを参照しているもの(for 属性、ARIA 属性、リンク)も更新します。
  2. 重複が、ページ内で複数回生成されるテンプレートなどの繰り返しコンポーネントに由来する場合は、一意の ID を生成するようテンプレートを修正します。参照する必要のないスタイル指定用のフックには、ID の代わりにクラスを使用することもできます。
  3. 検出された重複が、実際には使用状況において問題ない場合は、この検出結果を無視できます。

Silktide によるチェック方法

  1. ページ上で id 属性を持つすべての要素を検出します。SVG グラフィック内の要素は、ID が別のコンテキストに存在するため除外されます。
  2. 要素を id の値ごとにグループ化します。
  3. 同じ id を共有する要素が複数ある場合、それぞれにフラグを付けます。

詳細情報

最終更新

このページは役に立ちましたか?