by AWK

 Comments (3)

Created

May 23, 2008

This post is subject to Adobe's Terms of Use.

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

COMMENTS

  • By Carlos - 7:48 PM on May 25, 2008  

    Just wondering if screen reader detection make any sense once browser detection has proved to be such a bad idea.

  • By AWK - 8:57 PM on May 25, 2008  

    Carlos,
    I don’t think that knowing whether there is an actie MSAA client and knowing what browser and even version of browser being used is a useful comparison. This is more akin to whether javascript is able to be used on a system and using that information to offer adjustments. If we could detect which assistive technology and even which version of assistive technology I might agree, but right now this is too general to be compared directly, in my opinion.

  • By Vivek Gaikwad - 2:43 AM on May 27, 2008  

    Andrew, very rightly said. .isActive is an important method while implementing accessibility into an application. Now, it depends on us how effectively and where to use it.
    One concern is that, on changing the wmode to transparent or opaque browser refuses to identify the flash movie for the screen readers.
    There are things which can be achieved if we do let flash detect the screen reader when wmode is opaque or transparent.
    E.g. With wmode set to transparent or opaque, the screen reader will ignore the flash movie (but it should detect a screen reader with .isActive) then, we can have a count of how many screen reader users visited the site.
    peace, veiky