nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
https://www.nvaccess.org/
Other
2.09k stars 631 forks source link

Interrupt speech for assertive live regions #6335

Open csantos1113 opened 8 years ago

csantos1113 commented 8 years ago

there is an example about my code: https://jsfiddle.net/1Lf0d2y6/

This is my markup:

<div aria-live="assertive" aria-atomic="true" aria-relevant="additions text">
  <span>you could save</span>
  <span id="people">0 people</span>
</div>

I'm changing the number of people using a recursive function because the functionality requests show the increment of that number.

But for an accessibility user that increment is not important, we want the screen reader just read the last value 'you could save 9 people'.

That example works with Voice Over - Mac, but it doesn't work with NVDA - Windows.

Could you give me a light what I'm doing wrong and how can I fix it?

Thanks!

jcsteh commented 8 years ago

Please note that this tracker is for reporting bugs or feature requests concerning NVDA. Unless you're reasonably certain a problem you're having with web accessibility is due to a bug in NVDA, a better place to ask in future would be the nvda-devel email list. Thanks for your understanding.

That being said, I can't reproduce a problem here. I hear "You could save 2 people", "You could save 3 people", etc., right up to 9 people. This is in Firefox.

csantos1113 commented 8 years ago

I'm confused. The last message must interrupt the others messages. Why the messages are been reading one by one? @jcsteh

jcsteh commented 8 years ago

NVDA doesn't currently "interrupt" earlier messages for aria-live="assertive". Even if it did, though, there's a problem in this markup because all of these messages are "assertive", so they all have the same priority, which means it could be argued that later assertive messages shouldn't override earlier ones. (The spec talks about assertive and polite in terms of priority.)

jcsteh commented 8 years ago

I'm reopening this because according to the spec, we can interrupt speech for assertive live regions and we aren't required to re-queue previous messages. That said, this particular example worries me because it will continually interrupt what the user is doing and potentially prevent them from being able to use the page correctly.

derekriemer commented 8 years ago

I think a useful alternative is to let users kill a live region (You can do that in orca).

On 9/5/2016 6:09 PM, James Teh wrote:

I'm reopening this because according to the spec, we can interrupt speech for assertive live regions and we aren't required to re-queue previous messages. That said, this particular example worries me because it will continually interrupt what the user is doing and potentially prevent them from being able to use the page correctly.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/nvaccess/nvda/issues/6335#issuecomment-244823703, or mute the thread https://github.com/notifications/unsubscribe-auth/AFGivWMGlg71IGIUB4Htq9xdVtZiSJWmks5qnK9KgaJpZM4J1U1C.


Derek Riemer

Websites: Honors portfolio http://derekriemer.com Awesome little hand built weather app! http://django.derekriemer.com/weather/

email me at derek.riemer@colorado.edu mailto:derek.riemer@colorado.edu Phone: (303) 906-2194

DmitryEfimenko commented 2 years ago

@derekriemer killing (I assume you mean deleting node from the DOM) a live region does not interrupt the message in NVDA. This is still an issue. It's been 6 years.

seanbudd commented 2 years ago

This could be implemented using speech.priorities.Spri.NOW

kolaps33 commented 1 year ago

I hit the same issue that NVDA doesn't interrupt current narration. Enclosing example, it may be useful for testing. :)

live-region-assertive.zip

Repro steps

  1. Set focus on "first" button
  2. Press TAB key
  3. Observe narration

Expected result

When live regions are marked as assertive, assistive technologies SHOULD notify the user immediately. In our example screen reader should interrupt focused button narration and should narrate live region content.

Actual result

screen reader finish narration of focused button. After that narrates live region content.

Example

please find enclosed HTML page

victor141516 commented 1 year ago

I faced the same problem. Is there any plan on changing this behavior? Does anyone has found any workaround?

Adriani90 commented 5 months ago

cc: @SaschaCowley

Adriani90 commented 3 months ago

If this is implemented, this should be an optional setting in NVDA. In case of misusage of assertive, NVDA users will have really bad user experience being interupted in the wrong moment. In this case we should be able to at least turn off the high priority announcements.

I wonder if there could be a sound played in NVDA when a high priority announcement happens, or maybe a second speech layer could read it out without interupting the current speech sequence. this could be implemented via alternative speech framework, see #7599 for more details.