web-dev-qa-db-ja.com

JavaScriptを使用して、スクリーンリーダーがユーザーのマシンで実行されているかどうかを検出することはできますか?

Htmlのオーディオタグと音が衝突しないように、スクリーンリーダーがユーザーのマシンで実行されているかどうかを検出したいと思います。もしそうなら、これがどのように行われるかについての詳細を提供してください。

26
shuklendu

スクリーンリーダーが実行されていることを検出できたとしても、特別なことをしようとしないでください。スクリーンリーダーユーザーのあるグループでは正しく理解できたとしても、別のグループでは間違っている可能性があります。そもそも、きれいなHTML5を書くことに集中するのが最善です。

すべてのスクリーンリーダーユーザーがテキスト読み上げを使用しているわけではないことに注意してください。多くは点字出力を使用します。さらに、コンテンツハイライターや音声入力アプリなどの他のタイプのユーザー補助ツールは、スクリーンリーダーと同じ手法とAPI(DOM、MSAAなど)を使用するため、「スクリーンリーダーを検出する」手法はこれらも検出する可能性があります。ユーザーが完全に盲目で、音声のみを使用していることを意味するとは限りません。

現在のところ、オーディオタグは現在、誰もがアクセスできるわけではなく、ブラウザごとにアクセシビリティサポートのレベルが異なります。 HTML5アクセシビリティ を参照し、オーディオまでスクロールして現在のサポートの詳細を確認してください。オーディオタグの後にHTML5ベースのコントロールとJavaScriptを追加して、キーボードまたはスクリーンリーダーのユーザーが必要に応じてオーディオを再生/停止できるようにする独自のUIを提供できるページを見てきました。 (最終的には、ブラウザーが追いついたときに、これは必要ないはずです。)

一般的なアクセシビリティに関する限り、WCAG 2.0( Web Content Accessibility Guidelines )は、3秒を超えて自動的に再生されるオーディオには、オーディオを一時停止または停止するためのアクセス可能な手段を設けることを推奨しています。 (さらに進んで、自動オーディオを使用しないことをお勧めします-タブブラウジングを使用する場合、オーディオがどのタブから来ているのかを判断できないことがよくあります。)

12
BrendanMcK

完全に信頼できる方法ではない可能性がありますが、ユーザーがコンテンツをざっと見ながら、フォーカスイベントを使用してJavaScriptを介してスクリーンリーダーの進行状況を検出できます。

非表示の「ナビゲーションリンクをスキップ」( http://webaim.org/techniques/skipnav/ )に焦点を合わせると、誰かがスクリーンリーダーを使用しているかどうかを検出する1つの方法になります。

質問の音声部分には対応していませんが、スクリーンリーダーを自分で検出するための可能な方法を探していたので、この部分的な解決策を提供したかっただけです。

3
hexalys

Javascriptを使用してスクリーンリーダーを検出することはできません。クライアント側のテクノロジを使用してスクリーンリーダーを検出することはできません。 Flashを使用して [〜#〜] msaa [〜#〜] クライアントを実行しているソフトウェアを検出できます。それがどのように機能するか、そしてなぜそれが役に立たず、スクリーンリーダーを検出するために使用されるべきではないかについての詳細はここにあります: 開発者注意:スクリーンリーダーを検出するためのFlashの使用

2
Steve Faulkner