Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.
Sign upChrome and Opera speak words in alert twice when semantic elements like <strong> and <em> are included. #4066
Comments
This comment has been minimized.
This comment has been minimized.
|
Comment 1 by digitaltoast on 2014-04-10 11:00 For complete clarity, IE and Firefox do NOT exhibit this behaviour, which is why I was guessing that it might affect all Blink browsers as it affects both Chrome and Opera which are both Blink based. As far as I know. |
This comment has been minimized.
This comment has been minimized.
|
Comment 3 by vgjh2005 on 2014-04-10 13:48 |
This comment has been minimized.
This comment has been minimized.
|
Comment 4 by digitaltoast on 2014-04-10 13:55 I can confirm that the behaviour is the same whether I speed the voice up or slow it down, whether I use the built in espeak, Microsoft synthesizer or an external synth. I even completely reset my preferences to factory default and restarted. It still does it. Are you saying that you have experienced this, but only with a different voice rate? |
This comment has been minimized.
This comment has been minimized.
|
Comment 5 by jteh (in reply to comment description) on 2014-04-11 00:40 Confirmed. I think this is because Chrome-based browsers expose the content as both the name and the text of the object. Arguably, they shouldn't expose it in two places, but it probably isn't unreasonable for us to check for duplicates in this case. Replying to some specific points:
I don't recall this suggested work around, nor do I see how it would help. Of course, it's highly possible I've forgotten something. :) Can you point me at this discussion?
aria-describedby would probably work, as this explicitly specifies the alert content and thus overrides NVDA's calculation, but this obviously shouldn't be necessary. |
This comment has been minimized.
This comment has been minimized.
|
Comment 6 by digitaltoast on 2014-04-11 07:00
[apologies - you're right, I've got so many notes from the last few days I've got all muddled; it was actually cottrell in ticket:3481#comment:1 who said:
[in fact, entirely the opposite. Having worked my way through various tests, it seems that if I can make it alert once in Firefox it won't speak in IE, but using any workaround to make IE speak the alerts makes it alert twice in Firefox. I think the following tickets might be relevant: ticket:2442
[[BR]([BR]]
ticket:2745
[It appears to be a problem when a div contains text directly. If the text is wrap using a for example then the alert is only read once.[[BR]([BR]] ticket:3481
Also c8f02f472d4182fadfb1eb3304859b315fb8c5a6 may be relevant.Says it fixes http://community.nvda-project.org/ticket/248 from 5 years ago any workaround I use to get alerts to work in IE11 brings this doublespeaking back. The following may also be of interest: == tl;dr: == |
This comment has been minimized.
This comment has been minimized.
|
Comment 7 by jteh (in reply to comment 6) on 2014-04-11 11:53
I don't follow what you mean by a workaround to make IE speak the alerts. NVDA simply doesn't support alerts in IE (#2442). Unless you know of some trick I don't, it just won't work no matter what you do.
Unfortunately, getting this right is a lot more complicated than it seems. NVDA treats alerts similarly to dialogs because browsers and other applications often use alerts for dialog-like content that doesn't get the focus. They aren't the same as normal live regions because there are different rules as to when they should be reported and what to report. I don't follow the request to remove the word "alert"; it is an "alert" after all. If you don't want it to be an alert, don't use role="alert". |
This comment has been minimized.
This comment has been minimized.
|
Comment 8 by digitaltoast on 2014-04-11 12:09
Sorry, my ticket reply was quite long so the detail might have been lost in the waffle! Specifically, it's using method three from this page - http://blog.paciellogroup.com/2012/06/html5-accessibility-chops-aria-rolealert-browser-support/ It certainly fires it off as an alert in IE11 on Windows 8, but says (for, say, "hello") TBH, in a worse case scenario, I can live with an alert being read twice over no alert at all in a different browser. I realise I'm wandering off the original ticket bug. Would you like me to open a new separate ticket for this IE vs Firefox issue? Here's my playground page (https://googledrive.com/host/0B2NJeY_BTHQfaV9sY2wwRm55UEU/testalert.html which may vanish at any time), but I've also pasted the code below.
|
This comment has been minimized.
This comment has been minimized.
|
Comment 9 by jteh on 2014-04-12 01:44 I think the bigger priority is addressing the mangled speaking as originally described in this ticket. Repeated speaking is annoying and still needs to be addressed, but is lower priority. |
This comment has been minimized.
This comment has been minimized.
|
Comment 10 by James Teh <jamie@... on 2014-04-29 08:14
|
This comment has been minimized.
This comment has been minimized.
|
Comment 11 by James Teh <jamie@... on 2014-04-29 08:15
Changes:
|
This comment has been minimized.
This comment has been minimized.
|
Comment 12 by jteh on 2014-04-29 08:16 |
This comment has been minimized.
This comment has been minimized.
|
Comment 13 by James Teh <jamie@... on 2014-05-26 06:09
Changes:
|
This comment has been minimized.
This comment has been minimized.
|
Comment 14 by jteh on 2014-05-26 06:22 |
nvaccessAuto commentedApr 10, 2014
Reported by digitaltoast on 2014-04-10 10:51
Hello - first ticket here.
In Chrome, Opera and presumably other webkit-based browsers I've not tested yet, if an alert contains semantic tags such as or then it reads each section twice.
Exmaple:
<div role="alert"><p>The<em>emphasis</em>is on staying<strong>strong</strong>today</p></div>Will read:
Notes:
Is this a webkit issue that I should report to them, or an NVDA issue, bearing in mind it's only NVDA that exhibits this behaviour - as far as I know.
Example valid html without any other javascript, hacks, fiddles, workaround or other hocus-pocus to demonstrate the issue.
This is currently also up at http://goo.gl/6FXRft but that's just a temporary testing ground so may not remain in the future.
Hope I've submitted my first ticket OK, thanks.