プレースホルダーリンク
Silktide は、#(「このページの先頭」を意味するウェブアドレス)を指すリンクを見つけます。これらは通常、リンク先がまだ存在しない段階で追加され、その後更新されなかったプレースホルダーリンク、またはスクリプトを実行するために悪用されたリンクです。
<!-- 役割を終えずに残されたプレースホルダー:有用なリンク先がない -->
<a href="#">続きを読む</a>
<!-- スクリプトの実行に悪用されたリンク -->
<a href="#" onclick="openMenu()">メニュー</a>
これが重要な理由
# リンクをクリックした訪問者はどこかへ移動することを期待しますが、実際にはページが先頭までスクロールするだけなので、壊れたリンクのように見えます。このパターンを の実行に使うと、 に対しても誤解を招きます。 はこれをリンクとして読み上げ、ナビゲーションを期待させますが、実際にはボタンのように動作します。また、スクリプトの読み込みに失敗すると、何も起こりません。
こうしたリンクは、テンプレートにプレースホルダーのナビゲーションが含まれたまま公開されたものや、誰も見直さなかった「近日公開」リンクなど、残存物であることが多いです。
修正方法
- リンクをどこかへ移動させる目的だった場合は、
hrefを実際のリンク先に設定します。 - スクリプトを実行する場合は、 がアクションに使用することを想定している
<button>に置き換えます。
<!-- 修正前:ボタンのふりをするリンク -->
<a href="#" onclick="openMenu()">メニュー</a>
<!-- 修正後:実際のボタン。スタイルは自由に設定できます -->
<button onclick="openMenu()">メニュー</button>
- リンクに目的がない場合は、削除するかプレーンテキストに置き換えます。
#リンクが本当に意図されたものである場合(たとえば、確実に機能を拡張するフレームワークによって挿入される場合)は、して、再び検出されないようにします。
Silktide によるテスト方法
- 各ページ上の従来型のリンクをすべて見つけます。
hrefが正確に#であるリンクをそれぞれ報告します。
#news のようにページ内の名前付き位置へのリンクは正当なものであり、報告されません。
トラブルシューティング
JavaScript が処理するためリンクが機能する
スクリプトが正しく読み込まれている間はマウスユーザーに対して機能しますが、支援技術には依然としてリンクとして読み上げられ、スクリプトに失敗すると先頭までスクロールします。<button> ならこれらすべてのケースで正しく動作します。マークアップの変更が難しい場合は、判定を承認してください。
# がフレームワークまたは CMS コンポーネントから生成される
一部のフレームワークのメニューやタブコンポーネント、または テーマでは、デフォルトで href="#" が出力されます。代わりにボタンや実際のリンク先を出力する方法がないか、コンポーネントのドキュメントを確認してください。