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
Additionally, this only happened with JAWS in Internet Explorer.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.
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.
display:none
: Return to 2007