2011-10-10 8 views
19

Desidero rilevare se uno screen reader è in esecuzione sulla macchina di un utente per evitare il contrasto di audio con tag audio in html. In tal caso, fornire dettagli su come ciò potrebbe essere fatto.È possibile utilizzare javascript per rilevare se uno screen reader è in esecuzione su un computer degli utenti?

+1

+1. Non ho alcuna esperienza in merito, ma sicuramente uno screen reader che supporta il tag '

+0

In genere non è possibile rilevare se uno screen reader è in esecuzione. (Anche se è in esecuzione una tecnologia di accessibilità, potrebbe non essere uno screen-reader basato su audio: potrebbe essere uno screen reader basato su Braille o un'app di comando vocale di controllo e comando che utilizza alcune delle stesse tecniche di uno screen reader cosa.) Cosa vorresti fare diversamente se si potesse determinare che uno screen reader fosse in esecuzione? – BrendanMcK

risposta

10

Probabilmente non dovresti provare a fare qualcosa di speciale anche se potresti rilevare che uno screen reader è in esecuzione. Anche se lo fai nel modo giusto per un gruppo di utenti di screen reader, potresti sbagliare per un altro gruppo. La cosa migliore è concentrarsi sulla scrittura di un buon HTML5 in primo luogo.

Si noti che non tutti gli utenti di screen reader utilizzano la conversione da testo a voce; molti usano l'output braille. Inoltre, altri tipi di strumenti di accessibilità - come evidenziatori di contenuti e app di input vocale - utilizzano le stesse tecniche e API (ad esempio DOM, MSAA) che gli screen reader fanno, quindi qualsiasi tecnica che "rileva uno screen reader" probabilmente li rileverà anche - quindi non puoi presumere che ciò significhi che l'utente è completamente cieco e usa solo la parola.

Allo stato attuale, il tag audio non è al momento universalmente accessibile, diversi browser hanno diversi livelli di supporto per l'accessibilità - vedi HTML5 Accessibility e scorrere verso il basso per l'audio per ulteriori dettagli di supporto corrente. Ho visto alcune pagine che aggiungono controlli basati su HTML5 più javascript dopo il tag audio in modo che possano fornire la propria interfaccia utente per garantire che gli utenti di tastiera o di screen reader possano riprodurre/interrompere l'audio secondo necessità. (Eventualmente, quando i browser raggiungono, questo non dovrebbe essere necessario.)

Per quanto riguarda l'accessibilità generale, WCAG 2.0 (Web Content Accessibility Guidelines) consiglia che qualsiasi audio riprodotto automaticamente per più di 3 secondi dovrebbe disporre di mezzi accessibili per mettere in pausa o interrompere l'audio. (Mi piacerebbe andare ancora oltre e consiglio contro l'utilizzo di qualsiasi audio automatico - quando si utilizza la navigazione a schede, è spesso impossibile determinare da quale scheda proviene l'audio.)

+0

Downvoter - ti interessa spiegare il downvote? C'è qualcosa che potrebbe essere migliorato con questa risposta? – BrendanMcK

-2

Seguire il collegamento http://northtemple.com/2008/10/07/javascript-and-screen-readers Il problema si risolve definitivamente.

+0

grazie Arun per informazioni :) – shuklendu

+0

Ciao amico ......sono nuovo a stackoverflow pls vota alla mia risposta se il problema viene risolto – Untraceable

+6

Ciao Arun, il tuo link fornisce utili informazioni su come rendere Javascript accessibile agli screen reader; ma non è quello che l'OP chiedeva. Volevano sapere come * rilevare uno screen reader * di JS, a cui il link che hai postato non risponde. – BrendanMcK

2

Non è possibile rilevare gli screen reader utilizzando javascript, non è possibile rilevare lo schermo lettori che utilizzano qualsiasi tecnologia lato client. È possibile rilevare il software su cui è in esecuzione un client MSAA tramite Flash. Maggiori dettagli su come funziona e sul perché non è utile e non dovrebbero essere utilizzati per rilevare gli screen reader sono disponibili qui: Developer Beware: Using Flash to Detect Screen Readers

+0

@billthelizard, sarebbe utile se si fornisce un motivo per l'eliminazione dei commenti. –

3

Anche se probabilmente non è un modo completamente affidabile, il progresso di uno screen reader può essere rilevato tramite javascript utilizzando lo stato attivo evento, in quanto l'utente scansiona i contenuti.

Un "collegamento di navigazione salta" nascosto (http://webaim.org/techniques/skipnav/) dovrebbe essere focalizzato, sarebbe un modo per rilevare se qualcuno sta utilizzando uno screen reader.

Anche se non affronta la parte audio della questione, volevo solo per fornire questa soluzione parziale, mentre ero alla ricerca di possibili modi per rilevare screen reader me stesso.

+1

Che mi dici delle persone che navigano con la tastiera e che non usano uno screen reader? – steveax

+0

@stevax, A mia conoscenza, oltre alle solite stranezze dell'IE descritte, la navigazione con la tastiera implica un evento di messa a fuoco indipendentemente dal fatto che si utilizzi o meno uno screen reader. Ad esempio, VoiceOver assistito da Safari applica la messa a fuoco durante la scansione del contenuto tramite la tastiera. E un tabindex può essere usato per forzare l'attenzione su un elemento specifico per ordine, quando l'utente passa attraverso la pagina. – hexalys

+0

Forse non ero chiaro nel mio commento. Il punto che stavo cercando di fare è che non sarebbe possibile distinguere tra utenti di screen reader e persone che per qualche altro motivo (possibilmente a11anni correlati) navigano con la tastiera che non sta impiegando uno screen reader e che cercano di scegliere come target lo schermo gli utenti dei lettori in questo modo probabilmente porteranno a un sacco di ferite. – steveax