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

アンカーが見つかりません

Silktide は、#content のように同じページ内の特定の部分を指すリンクをテストし、リンク先が存在しないものを報告します。このようなリンクをクリックしても何も起こらず、ユーザーはその場に取り残されます。

<!-- 壊れた例: ページ内に id="content" を持つ要素がない -->
<a href="#content">コンテンツへスキップ</a>

<!-- 修正例: リンク先が存在する -->
<a href="#content">コンテンツへスキップ</a>
...
<main id="content">...</main>

重要な理由

存在しないアンカーへのリンクは、エラー画面が表示されることも、ページが移動することもなく、何も起こらないまま失敗します。視覚でページを見ているユーザーにとっては混乱の原因となり、やキーボードを使うユーザーにとってはさらに深刻です。というのも、このようなページ内リンクは、「コンテンツへスキップ」や目次のように、長いページを移動可能にする重要な仕組みであることが多いためです。壊れたアンカーは、そのショートカットをひそかに奪ってしまいます。

修正方法

  1. 不足しているリンク先を追加します。対象となる要素に、リンクのフラグメントと一致する id を付けます。たとえば、#pricing へのリンクに対しては <section id="pricing"> のようにします。
  2. または、リンク先が別の id で存在する場合は、リンクを修正します。フラグメントでは大文字と小文字が区別されるため、#Pricing は id="pricing" と一致しません。
  3. リンクが を実行するためだけに存在する場合でも、フラグメントは実際の要素の id を指すようにします。これにより、JavaScript がなくてもリンクの意味が保たれます。スクリプトで既定のスクロールを抑止する必要がある場合があります。
<!-- フラグメントが、スクリプトで表示される要素と一致している -->
<a href="#details" onclick="toggle('details')">詳細を表示</a>
<div id="details">...</div>

Silktide によるテスト方法

  1. ページ上で、リンク先にフラグメント(# の後の部分)を含むすべてのリンクを見つけます。
  2. 現在のページを指すリンクだけを残します。対象となるのは、#fragment のみで構成されたリンク、または同じページへの完全な URL です。他のページ上のアンカーへのリンクは、このチェックの対象外です。
  3. フラグメントと一致する id を持つ要素、または一致する名前を持つ旧式の <a name="..."> アンカーを探します。
  4. どちらも存在しない場合、そのリンクを問題として報告します。

詳細情報

最終更新

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