私はこの質問を知っています: JavaScript リンクには、「#」または「javascript:void(0)」のどちらの「href」値を使用する必要がありますか? javascript リンクの正しい href コンテンツがどうあるべきかについての議論が含まれています。これは 508 準拠とどのように関連していますか? クリックハンドラがJavaScriptコードの他の場所で定義されている場合、 javascript:void(0) が許容されるかどうかは誰にも分かりますか?
2 に答える
ここで用語が重要になります。アクセシビリティに関しては、「JavaScript リンク」などというものはありません。純粋なアンカー要素であるリンクと、アクセシビリティのために実行できないと見なされるべき JavaScript の動作があります。
JavaScript をトリガーする空のアンカー要素 (つまり、href='#' onclick='...' のようなもの) はリンクではなく、ページの動作をトリガーするための UI 要素です。アクセシビリティのために、これにアンカー要素を悪用しないでください。正しい ARIA ロールを持つ実際の UI 要素を使用してください。
クリックスルー リンク (「クリック アンカー」 -> 「魔法の JS が呼び出された」 -> 「window.location が新しいページに変更されました」のようなことを行う) の場合、意味的にコンテンツを誤って伝えていることに注意してください。アンカー要素を使用していますが、別のリソースへのアンカーではないため、それをリンクとして使用することはできません。上記の場合と同様に、実際にはボタンです。最後にページの場所が変わるという事実は、これを変えません。
真のアクセシビリティを実現するには、JavaScript を介在させないようにする必要があります。しかし、心配する必要はありません。思ったほど深刻ではありません。最も簡単な解決策は、代わりにリンクの再ルーティングを使用することです。google.com、duckduckgo.com などを使用したことがある場合は、既におなじみのことです。実際の URL にリンクするのではなく、ページのないスクリプトでプロキシされた URL にリンクします。URL「 http://our.domain.com/ref=http://the.actual.link.to.visit 」のアンカーが実際のサイトにうまくリダイレクトされることを保証できます。リダイレクトを解決するときに、サーバー側のアクションとして「人々がクリックしたときに」実行する必要がある任意の操作を追加できます。
JavaScript に依存していると考えると、508 準拠は難しいでしょう。アクセシビリティのために:積極的にそうしないようにしてください。使用できる場合は強化し、それがなくても機能することを確認します。
私は基本的にマイクに同意します。
これは 508 準拠とどのように関連していますか?
セクション 508 に関する一般的な誤解は、「ああ、私は自分のサイトを JAWS (または NVDA) で運営していましたが、問題はありませんでした。だから私は準拠しているのです」というものです。セクション 508 は、理論上、失明だけでなくすべての障害をカバーすることになっています。JavaScript を多用する場合、エージェンシーは「Web ベースのイントラネットおよびインターネットの情報とシステム」(1194.22) に加えて「ソフトウェア アプリケーションとオペレーティング システム」(1194.21) の標準を使用する傾向があります。WebAIM のような場所は、残念ながらこれを否定しています。
そのため、1194.21 が含まれている場合、「@alts と<label>
s をすべて付けますが、このサイト/アプリ/システムをキーボードで操作できますか? 別名、キーボードで操作できますか?」というように、標準をより簡単に読み取ることができます。<span>
リンクのように見えるものにたどり着くことができますか?
Mke が言ったように、これを支援する 1 つの方法は、ARIA を使用することです。したがって、次の<span>
ようにする必要があります。
<span onclick="Clicky()" role="link">Link</span>
(参照: MDN )
質問に戻ります。
私はこの質問を知っています: JavaScript リンクの Href 属性: "#" または "javascript:void(0)"? クリックハンドラがJavaScriptコードの他の場所で定義されている場合、 javascript:void(0) が許容されるかどうかは誰にも分かりますか?
参照 (ページ内参照と呼ばれると考えてください) が定義されていない場合、フォーカスはリンクにとどまるのではなく、ブラウザー フレームに戻るため、無効を推奨します。フォーカスをリンクに戻すには、いくつかのハンドラーを作成する必要があります。