JAWS, Window-Eyes and display:none: Return to 2007

I was recently asked if JAWS and Window-Eyes still displayed the bugs described by Gez Lemon in 2007 whereby content hidden using display:none was read by the screen readers under certain conditions.

The JAWS Bug

Back then, the situation with JAWS 7.1 was that it announces content in a span element hidden with display: none if it is in an anchor element. This only works with a span element; other inline elements used in an anchor element, such as em, strong, abbr, code, and so on, are not announced in JAWS. Additionally, this only happened with JAWS in Internet Explorer.

Having just tested this, I can confirm that this bug no longer affects JAWS 12 in Internet Explorer 9. After all, it has been about four years since that bug was discovered. In which specific version of JAWS this was fixed I can't say, having only tested the latest version.

The Window-Eyes Bug

While Window-Eyes 5.5 worked as expected with such hidden content, as soon as you added a CSS background image to the anchor itself or any other ancestor, up to but excluding the body element, Window-Eyes would announce the hidden content. Even if the link itself was hidden using display:none, if an ancestor element had a background image applied, Window-Eyes would read the link.

Using this test page, it is clear that Window-Eyes 7.5 in Internet Explorer 9, but not in Firefox 5, still exhibits the same bug. That is, content hidden using display:none is read by Window-Eyes in IE9 if the element itself or an ancestor has a CSS background image.

As was noted by Jared Smith all those years ago, doubling up display:none with visibility:hidden solves this problem with Window-Eyes. So if you are applying CSS background images and want to keep hidden children hidden from Window-Eyes in IE, this is what you'll need to do.

Browser Complicity?

Working with AViewer, the very useful tool from the Paciello Group, it seems that the accessible name that Internet Explorer 9 passes to the MSAA accessibility API for each of the anchors in the test page includes both the visible link text and the nested span hidden using display:none. On the other hand, Firefox 5 passes only the visible link text to both the MSAA and IAccessible2 APIs, leaving out the hidden span content.

This leads me, without completely understanding it all, to wonder if this might have something to do with Window-Eyes' behaviour where both the visible and hidden link text is read in certain conditions in IE9, but not in Firefox. If you can shed any light on this, please do.

2 Responses to JAWS, Window-Eyes and display:none: Return to 2007

Comments are now closed.