Updating an Ordered or Unordered List In The DOM With Javascript Breaks NVDA's List Announcement #2199

nvaccessAuto opened this Issue Mar 25, 2012 · 12 comments

2 participants


Reported by parham on 2012-03-25 13:55
When an action (E.G. clicking a link or a button which is inside a list or a table) causes the Javascript on the page to update an unordered (or ordered) list, or a table, pressing insert+up arrow in that element reports "list end" or just "cell" in case of tables. Note that this only happens when you are inside the list/table when the action occurs. An easy way is navigating inside the Facebook wall, where the comment text area fields get inserted as you scroll down the posts. This also happens reliably in tables where you have to drag and drop an element from one column to the next.
Blocking #4064


Comment 1 by jteh on 2012-03-25 23:21
I'm not sure exactly what you're reporting here. Are you saying that the new text doesn't get added to the document and you only here "out of list"? Are you saying your cursor position gets lost? Please be more specific about what you expect and what happens instead.


Comment 2 by parham on 2012-03-26 05:33
I couldn't give any "STR"s because I didn't have an example website you could try these on. However, I'll try to say what happens regardless.

STR for lists:

Go to the homepage of Facebook after logging in. Press H until you are on the first post (it will be in the "main landmark" section) and arrow down. You will pass a list that contains how many people liked this post, and another list inside for the comments, and below that there will be a text area field.
Actual result: You will get lots of announcements from NVDA when you focus on the text area field, such as "out of list out of list out of list list with 11 items".
Expected: The report should just be "out of list out of list" (the third out of list is because NVDA thinks you have exited the containing list with 11 items that contains all posts, and then it again finds that you are still in that list, so you get "list with 11 items").

STR for tables:
I can't find a website to try this, but this has happened many times. When you are in a table that requires you to drag, say, a file from one column to the next (imagine you could drag a file from the private column to the shared column to share it), drag the element with the drag key, move to the other column using alt+ctrl+right, route the mouse cursor to your current position, and release the left mouse button.
Actual result: navigating back to the previous cell (using either up arrow or alt+ctrl+left) would get you back to the cell, but rather than hearing, say, "row five column 1", you just hear "cell". Using alt+ctrl+left/right/up/down to navigate in the table will not work in this cell anymore. The only way to get it to work again is to press insert+f5.


Comment 3 by jteh on 2012-03-26 05:45
Understood. These are actually two separate issues. The table issue is the nastier problem, as it really does render incorrectly. The list issue is because NVDA thinks they are two separate lists due to the item count changing, but it does render correctly.


Comment 4 by parham (in reply to comment 3) on 2012-03-26 05:52
Replying to jteh:

These are actually two separate issues.

Ah. Do you want me to split the ticket up so the two different issues can be tracked separately, or is it fine as is?


Comment 5 by jteh on 2012-03-26 06:06
If you have time, please do narrow this ticket and file another.


Comment 6 by parham on 2012-03-26 06:14
Changed title from "Updating The DOM With Javascript Breaks NVDA's HTML tracking" to "Updating an Ordered or Unordered List In The DOM With Javascript Breaks NVDA's List Announcement"


Comment 7 by mdcurran on 2014-04-15 04:45
More broadly speaking, if any property of a controlField in the ancestry of the current cursor position in a virtualBuffer changes, speakTextInfo will announce all controlFields down from that point. Where unique IDs are available for controlFields (such as the docHandle and ID for a node in a virtualBuffer) we should compare using these, rather than comparing all properties in the field.
Milestone changed from None to next


Comment 8 by Michael Curran <mick@... on 2014-04-15 06:03
In [0b39ba7]:
```CommitTicketReference repository="" revision="0b39ba7491f93a993cc6732cb81f727fac3c8d8a"
Merge branch 't2199' into next. Incubates #2199

Added labels: incubating

Comment 10 by MarcoZehe on 2014-04-16 15:12
This improves the usability of Facebook in Firefox by a ton! No more superflous ancestry announcements when just switching lines within a post etc. Thank you, Mick!


Comment 11 by parham (in reply to comment 10) on 2014-04-16 15:59
Replying to MarcoZehe:

This improves the usability of Facebook in Firefox by a ton! No more superflous ancestry announcements when just switching lines within a post etc. Thank you, Mick!

Awesome! Thanks!


Comment 12 by Michael Curran <mick@... on 2014-04-30 23:09
In [989b5bb]:
```CommitTicketReference repository="" revision="989b5bbd4c2104c93c60fa3d6abe8dbeab84cb3a"
Merge branch 't2199'. Fixes #2199

Removed labels: incubating
State: closed

Comment 13 by mdcurran on 2014-04-30 23:11
Milestone changed from next to 2014.2

@nvaccessAuto nvaccessAuto added this to the 2014.2 milestone Nov 10, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment