New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NVDA gets confused when tables have hidden cells #5655

Closed
ghost opened this Issue Jan 5, 2016 · 3 comments

Comments

Projects
None yet
2 participants
@ghost

ghost commented Jan 5, 2016

Someday aria-colindex and aria-rowindex might allow for some very strange tables, but in the meantime NVDA should be more robust at handling tables with hidden cells.

Here's an example table. When you use NVDA's table navigation keystrokes it gets confused and gives the wrong feedback when navigating to a hidden cell.

<style>
  table {
    border-collapse: collapse;
  }
  td {
    border: 1px solid #000;
    padding: 1em;
  }
  *[aria-hidden="true"] {
    background-color: #ffd;
  }
</style>
<table>
  <tr>
    <th>A</th>
    <th>B</th>
    <th>C</th>
  </tr>
  <tr>
    <td>Northwest</td>
    <td>North</td>
    <td aria-hidden="true">Northeast (hidden)</td>
  </tr>
  <tr>
    <td>West</td>
    <td aria-hidden="true">Center (hidden)</td>
    <td>East</td>
  </tr>
  <tr>
    <td aria-hidden="true">Southwest (hidden)</td>
    <td>South</td>
    <td>Southeast</td>
  </tr>
</table>
@jcsteh

This comment has been minimized.

Show comment
Hide comment
@jcsteh

jcsteh Jan 5, 2016

Contributor

I'm not really sure what the appropriate behaviour should actually be here. How does this appear visually? Does it just look like there is empty space in place of the hidden cells (but positioning is still correct)?

I have major concerns about changing table navigation commands to just move to the next possible row or column, regardless of how many rows/cols we're skipping. Users rely on these commands to get a spatial "feel" for the table. If the commands are jumping columns and rows here and there, that spatial mapping gets rather broken. If there is an empty space, I think I'd prefer to treat this as an empty cell, as this is probably closer to how sighted users see it.

Contributor

jcsteh commented Jan 5, 2016

I'm not really sure what the appropriate behaviour should actually be here. How does this appear visually? Does it just look like there is empty space in place of the hidden cells (but positioning is still correct)?

I have major concerns about changing table navigation commands to just move to the next possible row or column, regardless of how many rows/cols we're skipping. Users rely on these commands to get a spatial "feel" for the table. If the commands are jumping columns and rows here and there, that spatial mapping gets rather broken. If there is an empty space, I think I'd prefer to treat this as an empty cell, as this is probably closer to how sighted users see it.

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Jan 20, 2016

Visually this is just a normal 3 x 3 table, I didn't actually hide the missing cells, but if you add visibility:hidden to the cells that have aria-hidden="true", then those cells disappear without shifting anything else visually.

I'm not suggesting that the table navigation commands move to the next possible row or column. I think it's still up for debate what we should do for tables with many empty rows or columns.

In this case, though, what NVDA does now gives the user no indication that they've navigated to a missing cell. Maybe it could just say something like "missing cell" but announce the row and column header, if present? That would make it easier for users to navigate through tables with missing cells.

ghost commented Jan 20, 2016

Visually this is just a normal 3 x 3 table, I didn't actually hide the missing cells, but if you add visibility:hidden to the cells that have aria-hidden="true", then those cells disappear without shifting anything else visually.

I'm not suggesting that the table navigation commands move to the next possible row or column. I think it's still up for debate what we should do for tables with many empty rows or columns.

In this case, though, what NVDA does now gives the user no indication that they've navigated to a missing cell. Maybe it could just say something like "missing cell" but announce the row and column header, if present? That would make it easier for users to navigate through tables with missing cells.

@jcsteh

This comment has been minimized.

Show comment
Hide comment
@jcsteh

jcsteh Jan 20, 2016

Contributor

What if you add display: none to those cells?

This is a really tricky situation. To navigate to anything, NVDA expects it to be there. It doesn't make sense to navigate to a hidden cell because it's hidden, so it doesn't exist. I'm actually surprised NVDA doesn't just say "edge of table" in this case; I'm guessing IAccessibleTable2 is returning something unexpected, but I'll need to investigate.

I don't know what we can really do to fix this without additional API. As discussed on the IA2 list, just walking the tree is not a sane option IMO.

Contributor

jcsteh commented Jan 20, 2016

What if you add display: none to those cells?

This is a really tricky situation. To navigate to anything, NVDA expects it to be there. It doesn't make sense to navigate to a hidden cell because it's hidden, so it doesn't exist. I'm actually surprised NVDA doesn't just say "edge of table" in this case; I'm guessing IAccessibleTable2 is returning something unexpected, but I'll need to investigate.

I don't know what we can really do to fix this without additional API. As discussed on the IA2 list, just walking the tree is not a sane option IMO.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment