2011-10-10 87 views
19

我想檢測一個屏幕閱讀器是否在用戶的機器上運行,以避免聲音與html中的音頻標籤衝突。如果是這樣,請提供詳細信息,說明如何做到這一點。是否可以使用JavaScript檢測屏幕閱讀器是否在用戶計算機上運行?

+1

+1。我沒有這方面的經驗,但肯定支持'

+0

通常無法檢測屏幕閱讀器是否正在運行。 (即使一些輔助功能技術正在運行,它可能不是一個基於音頻的屏幕閱讀器:它可能是一個基於盲文的屏幕閱讀器,或者是一個命令與控制語音控制應用程序,它使用與屏幕閱讀器相同的技術)。如果你可以確定屏幕閱讀器正在運行,你想要做什麼改變? – BrendanMcK

回答

10

你可能不應該嘗試做什麼特別的事情,即使你可以檢測到一個屏幕閱讀器正在運行。即使您爲一組屏幕閱讀器用戶正確使用,您也可能會爲另一個組織錯誤。最好集中精力編寫好乾淨的HTML5。

請注意,並非所有屏幕閱讀器用戶都使用文本轉語音;許多使用盲文輸出。此外,其他類型的輔助功能工具(如內容熒光筆和語音輸入應用程序)使用屏幕閱讀器所使用的相同技術和API(例如DOM,MSAA),因此任何「檢測屏幕閱讀器」的技術都可能會檢測到這些 - 所以你不能認爲這意味着用戶完全失明,只能使用語音。

由於目前的情況,音頻標籤目前不能普遍訪問,不同的瀏覽器具有不同級別的可訪問性支持 - 請參閱HTML5 Accessibility並向下滾動至音頻以獲取有關當前支持的更多詳細信息。我已經看到了一些在音頻標籤之後添加了基於HTML5的控件和JavaScript的頁面,以便他們可以提供自己的UI以確保鍵盤或屏幕閱讀器用戶可以根據需要播放/停止音頻。 (最終,當瀏覽器趕上時,不應該需要這樣做。)

就一般可訪問性而言,WCAG 2.0(Web Content Accessibility Guidelines)建議任何自動播放超過3秒的音頻都應該有一種可訪問的方式來暫停或停止音頻。 (我會走得更遠,最好不要使用任何自動音頻 - 使用標籤式瀏覽的時候,它往往無法確定聲音來自哪個選項卡。)

+0

Downvoter - 謹慎解釋爲什麼downvote?這個答案有什麼可以改進的嗎? – BrendanMcK

-2

請點擊鏈接 http://northtemple.com/2008/10/07/javascript-and-screen-readers 您的問題得到明確解決。

+0

thanx阿倫的信息:) – shuklendu

+0

嗨,朋友......如果你的問題得到解決,我是新來的stackoverflow請投票給我的答案 – Untraceable

+6

嗨Arun,你的鏈接確實提供了有助於屏幕閱讀器訪問Javascript的有用信息;但這不是OP要求的。他們想知道如何檢測來自JS的屏幕閱讀器*,您發佈的鏈接無法回答。 – BrendanMcK

2

使用JavaScript無法檢測屏幕閱讀器,你不能檢測屏幕讀者使用任何客戶端技術。您可以使用Flash檢測運行MSAA客戶端的軟件。關於它是如何工作的以及爲什麼它不是有用的,並且不應該用於檢測屏幕閱讀器的更多細節可以在這裏獲得:Developer Beware: Using Flash to Detect Screen Readers

+0

@billthelizard,如果您提供刪除評論的理由,這將有所幫助。 –

3

儘管可能不是完全可靠的方式,但是可以通過使用焦點的javascript檢測屏幕閱讀器的進度事件,因爲用戶瀏覽內容。

一個隱藏的「跳過導航鏈接」(http://webaim.org/techniques/skipnav/),它應該被關注,是檢測是否有人在使用屏幕閱讀的一種方式。

即使它並沒有解決問題的音頻部分,我只是想提供這樣的部分解決方案,因爲我一直在尋找可能的方法來檢測屏幕閱讀自己。

+1

那些用鍵盤進行導航的人不會使用屏幕閱讀器呢? – steveax

+0

@stevax,據我所知,除了描述的常見IE怪癖外,無論您是否使用屏幕閱讀器,使用鍵盤進行導航都意味着焦點事件。例如,Safari的輔助VoiceOver在使用鍵盤瀏覽內容時會應用焦點。當用戶選項卡通過頁面時,可以使用tabindex按順序強制關注特定元素。 – hexalys

+0

也許我不清楚我的評論。我試圖做的一點是,不可能區分屏幕閱讀器用戶和那些出於某種其他原因(可能是相關的)的用戶使用未使用屏幕閱讀器的鍵盤進行導航,並試圖以屏幕爲目標讀者用戶這種方式可能會導致一大袋傷害。 – steveax

相關問題