Developer Beware: Using Flash to Detect Screen Readers
The facility to detect some Assistive Technology by using Flash has been around since ActionScript 1.0 and Flash Player 6. The method has usually been referred to as a way to ‘detect screen readers’. Unfortunately this method, using the ActionScript
Accessibility.isActive method, is not a ‘screen reader’ detector.
Accessibility.isActive method documentation is quite clear on this
Indicates whether an accessibility aid is currently active and the player is communicating with it. Use this method when you want your application to behave differently in the presence of a screen reader or other accessibility aid.
What it actually detects is the presence of software that is accessing accessible information via the Microsoft Active Accessibility (MSAA) API. Assistive Technology that makes use of MSAA includes, but is not limited to, JAWS and Window Eyes screen readers, Zoomtext and Magic magnifiers and Dragon Naturally Speaking text to speech software.
There is currently no method available to detect what type of software is being used, only that it makes use of MSAA. It is obvious that alternative content, which may be appropriate for screen reader usersÂ could reduce the accessibility for magnifier or text to speech software users, who have different content view and interaction requirements.
Furthermore, this method works on Internet Explorer and Firefox under Windows, but any Assistive Technology that is not being used on Windows or not using MSAA, or the user is browsing with browsers other than IE and Firefox, will not be detected.
Problematic use – an example:
A recent use of “screen reader” detection that I encountered illustrates the dangers and limitations of this method: A Flash based interactive video makes use of “screen reader” detection to provide an alternative interface and content to screen reader users. The regular version includes an audio track, whereas the “screen reader” version removes the audio track and replaces it with a hidden text stream. If a screen reader is detected, the user is presented with a message informing them that if they want to use the version with audio, they need to close the current page, turn off their assistive technology and re-open the page. This means that users must turn off the software they require to access the page in the first place.
Andrew Kirkpatrick on the use of
I talked with Andrew Kirkpatrick, Senior Product Manager, Accessibility for Adobe Systems about the use of this method, here is what he had to say:
“It is accurate to say that a Flash application can detect when an MSAA-using screen reader is running, but the Flash application won’t know if the
isActiveflag is set by a screen reader or other assistive technology or even by an MSAA testing tool. Developers may still make effective use of the ability to detect potential screen reader use and to offer choices to users. Adobe’s goal is to provide developers the ability to author one version of an application that works for all users rather than resorting to specialized experiences for separate audiences.”
isactive has the potential to be useful in providing choices to users, it must be used with caution. Don’t make assumptions about users based on the
isactive flag. Provide extra options, but do not remove options, which can force users to jump through hoops to avoid an inferior experience.
- Detecting Screen Readers
- Accessibility: Screen reader detection
- The Crystal Ball: A.T. I.D. – post in response to Developer Beware…
Thanks to Gez Lemon and Andrew Kirkpatrick, for their advice and input.