-
Notifications
You must be signed in to change notification settings - Fork 27.4k
JAWS reads pre-compiled content #15079
Comments
Then this sounds like a JAWS bug, no? Or the aria spec is not clear enough in this case. @marcysutton Do you know if there's anything we can do about this? |
I can repro that issue on the Angular Material autocomplete, which uses a similar This definitely seems like a JAWS bug–it's already known to have issues with ARIA live regions, as you can see from my note above. Unfortunately there isn't much you can do aside from compiling content in the virtual DOM before inserting it into a live region. Perhaps you could try rendering content in the live region that doesn't rely on Also this isn't related to the ngAria component–it occurs without that module. @Narretz |
Fwiw, we don't have a virtual DOM in ng1 😄 I am afraid there is not much we can do on the Angular side 😞 |
Yep, I knew ng1 didn't have that option. It works correctly in NVDA in both Firefox and IE11. I don't think there's a bug tracker for JAWS, so I'd consider this one a can't/won't fix. Correction: there is an email address for Freedom Scientific, so I reported the bug there. It is also reproducible in the public beta for JAWS 18 |
For anyone else who is looking for a workaround for this, I also tried using <li ng-repeat="item in bindItems" ng-bind="item.name"></li> This results in JAWS reading nothing. 😦 |
Since this seems to be a JAWS issue and there isn't anything we can do about it in Angular (afaict), I am going to close this. Thx @NickHeiner, for reporting this, so people facing the same issue can find it here. If anyone finds a workaround or has an update on the situation or can suggest a fix for Angular, please post below. |
@NickHeiner Very interesting,..I was able to get JAWS to read the Here's a screencast: http://www.screencast.com/t/29s1x3pwg |
@joe-watkins I think one of my co-workers reported it working on JAWS 17. Maybe it's a bug in JAWS 17 and a regression in JAWS 18? |
Do you want to request a feature or report a bug?
Bug.
What is the current behavior?
JAWS reads the pre-compiled HTML content instead of the compiled HTML content. For instance, if I have the following HTML:
If a new element that looks like
{name: 'Barcelona'}
is added toitems
, then JAWS will read "left bracket left bracket item dot name right bracket right bracket".If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem via https://plnkr.co or similar.
What is the expected behavior?
I expect to hear "Widget 1" instead of "left bracket left bracket item dot name right bracket right bracket".
What is the motivation / use case for changing the behavior?
This is the screen-reader equivalent of a raw
{{item.name}}
string being visible to the end-user.Which versions of Angular, and which browser / OS are affected by this issue? Did this work in previous versions of Angular? Please also test with the latest stable and snapshot (https://code.angularjs.org/snapshot/) versions.
Other information (e.g. stacktraces, related issues, suggestions how to fix)
Related, but more specific: #11466
I thought that it may work to put
aria-hidden="true"
on elements until they were compiled. I tried this on my demo page. You can try it for yourself by clicking the "Add initially hidden item" button. On VoiceOver, this does what I would expect, which is read the content afteraria-hidden
is removed. On JAWS, the content is never read. So this will not work.Fundamentally, it seems that the problem is that content is being put into the DOM that is not compiled yet, and JAWS is picking it up. We need some way to either defer actually inserting content into the DOM until it's compiled, or tell JAWS that the content is not yet ready to be read.
I'm happy to submit a PR for this, but it seemed sufficiently complicated that it was worth opening an issue to start a discussion first.
Thanks! I'm happy to provide any follow-up information as needed.
The text was updated successfully, but these errors were encountered: