Steve Faulkner wrote a good post at The Paciello Group’s blog on screen reader detection (http://www.paciellogroup.com/blog/?p=61). His points are all quite fair and it is worth noting that what the Flash Player does is detect the presence of a running MSAA client, which is broader than screen readers.
This technique shouldn’t be entirely discounted, however, for certain kinds of use that take advantage of the facts, which are that all Flash-reading screen readers will cause the player to set the Accessibility.active property to true, and that there are few MSAA clients that are likely to be running, although some are likely to be non-screen reader assistive technologies.
Here’s a few ways that .active can be used that will benefit screen reader users, and won’t be disruptive to other potential users, or may be beneficial:
1) Replacing inaccessible or difficult to use controls. If using a complex control in a Flex or Flash application, or a control that has not been improved for accessibility, you can swap that control for an equivalent one when .active is true. In one of our Flex 2 sample applications there is a slider control with two slider thumbs that the user uses to set a start and end date for the data being displayed. When an MSAA client is active, this slider is replaced with a pair of combo boxes, one setting the start date and one for setting the end date. The idea of a double-slider makes sense for UI designers, but there isn’t a way in MSAA to express a double-slider, so a simple replacement here is justifyable.
2) Offering users additional options when .active is true that are likely to be beneficial is another possible use. For example, a developer might present a pop-up dialog that asks if the user wants audio description on. There would be a UI control that would allow all users to turn audio description on and off, but this would be an improvement that would be easier for blind or viisually-impaired users and that wouldn’t adversely affect any other user who has a system that uses MSAA in some other way.
3) Pausing video. In a video made in Flash a developer might make the video paused when loaded when .active is true. If a screen reader user needs to navigate to the pause or stop buttons for a video while the video is playing they will find that very difficult due to competing audio tracks from the video and the screen reader. Allowing users the choice of whether video plays by default is nice for other users also, but causes more problems for blind and visuall-impaired users.
These are just examples to show that using .active to make good decisions is not impossible — I agree with Steve’s post that I would distill down to “.actve is not only set to true by screen readers”. Think carefully about how you may use it.
NOTE: .isActive is an AS2 method, .active is an AS3 property – see http://livedocs.adobe.com/flex/201/langref/migration.html for migration information