WebAIM - Web Accessibility In Mind

E-mail List Archives

Re: aria-hidden and NVDA, isn't this a bug?

for

From: Bryan Garaventa
Date: Aug 10, 2013 1:48PM


This is sort of tricky.

JAWS' ability to reevaluate the elements removed from the accessibility tree
using aria-hidden may be useful, but it's also misleading.

The use of aria-hidden doesn't actually change the elements in the DOM at
all, meaning that they still exist within their native containers. Such as
lists having the same number of LIs, and tables having the same number of
TDs, regardless what is announced by the screen reader.

So, if you use aria-hidden to simulate a properly formed data table
structure by hiding extra cells, it is still an improperly formed data table
in the browser, and will likely have accessibility issues for other ATs.

The same is true for ULs, where lists are defined by the number of LIs
within, and surrounding the LI tags with different container elements inside
of the UL or OL may present different accessibility issues, regardless
whether aria-hidden is applied.

I suspect NVDA is evaluating the DOM directly for this information, which is
why it is announcing these values. Perhaps one of the NVDA guys here can
elaborate further to clarify.

The use of aria-hidden to hide an element including all child elements
should work on any element type, not just containers.

Keep in mind that this doesn't effect the tab order of active elements at
all. So, if you have an active element within the boundary of a container
hidden via aria-hidden, it will still be in the tab order regardless, and
will sound like a dead tab stop for screen reader users.


----- Original Message -----
From: "Birkir R. Gunnarsson" < <EMAIL REMOVED> >
To: "WebAIM Discussion List" < <EMAIL REMOVED> >
Sent: Saturday, August 10, 2013 12:17 PM
Subject: [WebAIM] aria-hidden and NVDA, isn't this a bug?


> Greetings wise ones
>
> Opinions needed and welcome.
> I am experimenting with use of aria-hidden to hide lists/list items
> and table cells.
> This works nicely in Jaws, but not in NVDA.
>
> Starting with lists.
> Applying aria-hidden on a list item
> <code>
> <ul>
> <li>List item #1</li>
> <li aria-hidden="true">Hidden item 1</li>
> <li aria-hidden="true">Hidden item #2</li>
> </ul>
> </code>
> NVDA respects the aria-hidden use for the list items themselves, but
> announces, in the list summary: "list with 3 items", even if the list
> only contains one, and the quick key to jump to next list item does
> not work.
> This happens both in IE10 and FF22.
> Using role="presentation" along with the aria-hidden does not have any
> effect.
>
> Even if the latter two list items are wrapped up in a div with
> aria-hidden set to true, NVDA still announces the list as having two
> items.
>
> Jaws recognizes both versions of the list as having just one item.
> Similarly if a table cell is marked with aria-hidden Jaws ignores it,
> but NVDA does not.
> This can lead to serious navigation issues in tables with these cells,
> since when inserted it forces an entire column and shifts all the
> information to the right, creating a mismatch between column header
> and the info they contain.
> Just imagine a row with two columns.
> First Name and Last Name.
> If a td is inserted with aria-hidden="true", then the values, Jaws
> announces the table as having two columns and two rows, and announces
> values correctly.
> NVDA announces table as having 3 columns and two rows and the table
> navigation gets very messy actually.
>
> So, basically, is it my misinterpretation that aria-hidden should hide
> its element as well as all info inside that element.
> Does aria hidden always have to be used on a container element such as a
> div?
> A quick check on the ARIA specs did not really show me anything either
> way, may be I was not interpreting something correctly.
> Cheers
> -Birkir
> > >