Ticket #123 (new enhancement)

Opened 4 years ago

Last modified 35 hours ago

NVDA should provide ability to navigate out of HTML elements in virtual buffer

Reported by: vtsaran Owned by:
Priority: minor Milestone:
Component: Browse mode Version:
Keywords: Cc:
Operating system: Blocked by:
Blocking:

Description

Users should have ability to navigate out of elements such as lists, tables, sections etc, with a single keystroke. I believe, this should be easily achievable with the new virtual buffer library.

Change History

comment:1 Changed 4 years ago by jteh

Similar to #71, this is not as simple as it seems. First, there are a few questions concerning the behaviour you want to see:

  • Most "elements" are represented in NVDA's virtual buffer. This includes list items. So, should moving out of the current element simply move out of the current list item, div, span, etc.? If not, this requirement needs to be very specific. Should we then move up the hierarchy and move out of lists, divs (sections) and tables?
  • Where should it move? Again, everything is based on elements. I'm assuming you're thinking it should move to the next element after the one just escaped. However, this again needs to be quite specific.

From an implementation perspective, the virtual buffer library itself can currently "search" for nodes, but simply iterating or moving through nodes is actually somewhat trickier. This is partially because the virtual buffer nodes are actually structured in a hierarchical fashion, even though the text is flat.

comment:2 Changed 4 years ago by vtsaran

I am primarily after practical application of this feature. An ability to skip out of lists and tables would be a good start.
In my view, skipping ut of sections may not be as practical considering how widely divs are used in web 2.0 sites.

comment:3 follow-up: ↓ 4 Changed 21 months ago by parham

Logically, <div>, <span>, and tags of that nature should not count, because they tend to be used everywhere, probably in list items too. What I have seen in other screen readers is this:

In Jaws, for example, when you press the greator button, if you are inside a table, you are put outside of it (not to the start of next element, just after the, say, </table> tag). the same thing happens with lists and definition lists. Also, the first </table> or </ol> or </ul> or </dl> should be exited out of, so that when, for example, you are in a list which is inside another list, or in a table which is inside another table, you will still be in the table that appears higher in the document tree (I.E. is the parent list/table of the one you are currently in).

comment:4 in reply to: ↑ 3 Changed 13 months ago by parham

Is this ticket forgotten? It is really annoying to press down arrow as many times as the number of rows multiplied by the number of column in a table, to be able to get to the end. When tables get big or lists get long, this becomes a real issue. I'm thinking it would be better to implement this feature for a list of particular elements, not all. For example, tables, lists, and textareas. No one would need to go to the end of an input or div or span element, and it's possible to go to the next paragraph using ctrl+down arrow anyway, so it is not as hard as it is made to seem. All needs to be done is to move the virtual cursor to the end of the table containing the current cell and the containing row above it, and in terms of lists, moving the cursor to the end of the list containing the current list element (LI tag).

Replying to parham:

Logically, <div>, <span>, and tags of that nature should not count, because they tend to be used everywhere, probably in list items too. What I have seen in other screen readers is this:

In Jaws, for example, when you press the greator button, if you are inside a table, you are put outside of it (not to the start of next element, just after the, say, </table> tag). the same thing happens with lists and definition lists. Also, the first </table> or </ol> or </ul> or </dl> should be exited out of, so that when, for example, you are in a list which is inside another list, or in a table which is inside another table, you will still be in the table that appears higher in the document tree (I.E. is the parent list/table of the one you are currently in).

comment:5 Changed 35 hours ago by peter

Hi guis,
I would like to support this idea. Jumping over long list or table is really useful on many websites. I made a simple greasemonkey script which adds invisible separator to the begining and the end of each ul, ol, tr and blockquote and these separators can be used to easily skip long lists and tables. But these separators are announced by nvda which is of course not good in many situations because nvda is too chatty. What do you think about the following idea?
Give the user a possibility (e.g. in configuration dialog) to allow nvda to add special inivisible markings to the page represented in virtual viewer. For example bbefore and after all lists, before and after all tables, before and after all block quotes and so on, and implement hotkeys to skyp to next and previous invisible mark. This can help those of us (happy users of nvda) who would like to skyp long chunks of list items, tables,... and it seems that this is not very complicated to implement.
May be that these marks can be used more intelligently in the future. E.G. it is possible to think about some heuristics to find the main contents of document without aria landmarks definitions and mark it.

Note: See TracTickets for help on using tickets.