Flash/flex accessibility and wmode
Tuesday, 03 October 2006The Flash Player has supported the wmode parameter since version 3 or so, but I didn’t realise until recently that setting wmode to ‘opaque’ or ‘transparent’ causes the Flash movie to be completely invisible to assistive technologies such as screen readers.
The default value for wmode is ‘window’, which causes the Flash movie to be rendered in its own invisible window floating above all the content in the browser window. This causes problems with DHTML menus and the like, and the common solution offered is to set wmode to ‘opaque’, instructing the Flash Player to render its content directly onto the browser’s window. This means that CSS styles such as z-index are respected, allowing you to place DHTML content over the top of the Flash movie. Perfect, right? Apparently not.
The first drawback, and one that’s been known for a while, is that performance degrades when wmode is set to ‘opaque’ and even more so with ‘transparent.’ However, a bigger concern is that if wmode is set to anything other than ‘window’ the Flash movie will be completely inaccessible to screen readers, undoing any good work you may have done with the accessibility properties.
Of course, this can have its uses. If your Flash movie is purely a visual thing and doesn’t actually contain any content, you can use the wmode parameter to hide it completely from screen readers. Just be sure that’s what you want to do.
For more information on wmode, see the How to make a Flash movie with a transparent background TechNote. For more information on how screen readers interact with Flash movies, see Andrew Kirkpatrick’s excellent ‘In search of… a perfect plugin technique’ article
Update: I’ve updated the article to reflect the additional information and clarification provided by John Dowdell – see comments.






And it screws up textfields and keyboard mappings in firefox
nicolas | Tuesday, 03 October 2006 | 1:28 pmAnd it screws up textfields and keyboard mappings in firefox
In the default state, browser extensions (Netscape Plugins & ActiveX
John Dowdell | Tuesday, 03 October 2006 | 4:07 pmIn the default state, browser extensions (Netscape Plugins & ActiveX Controls) render directly to the screen.
Many browsers and extensions now support the ability to pipe the extension’s output directly into the browser’s compositing buffer. This is triggered by WMODE. (Macromedia Flash Player introduced WMODE support as soon as some browsers offered it, towards version 3 or so.)
But… the browser owns the final rendering then, because we don’t go direct-to-screen. Different browsers have different behavior… some print upside-down, some don’t pass MSAA calls through, and so on.
Like other browser differences, there are few resources on the exact ways each of the various browsers handle things differently. Andrew Kirkpatrick has one of the most intensive tests of how different browsers change assistive abilities in response to different scripts and tags: http://weblogs.macromedia.com/accessibility/archives/2005/08/in_search_of_a.cfm
Thanks John for the extra information. I've updated the article
Steve | Tuesday, 03 October 2006 | 4:33 pmThanks John for the extra information. I’ve updated the article to include the information you’ve provided.
[...] Flash/flex accessibility and wmode [...]
wmode ??? « ????? | Thursday, 20 September 2007 | 9:56 am[...] Flash/flex accessibility and wmode [...]
9at6mfkz8kh4vunl
Joaquin Schmidt | Thursday, 13 November 2008 | 12:15 am9at6mfkz8kh4vunl
[...] http://dynamicflash.com/2006/10/flash-accessibility-and-wmode/ [...]
Flash Windowless Mode (wmode) « On the Edge | Sunday, 09 August 2009 | 4:57 pm[...] http://dynamicflash.com/2006/10/flash-accessibility-and-wmode/ [...]