(Lectora 21) Screen Reader repeating text - any workarounds?
May 26, 2022 12:00 AM
Hi All,
I am new to using Lectora 21 (Desktop), we previously used 18 and 16,
I'm trying to develop an accessible course for a client and have the course set to use web accessibility settings in the project options. The goal is for the course to function with both JAWS and NVDA.
I have content (a group that contains a text block) that is initially hidden that then appears on the click of a button. Lectora 21 is better in the sense that I can have the content set to "initially hidden" and it still gets read by screenreaders (in 18 and 16 you have to use an "on show hide" action for it to work). It is nice to also have a "focus" action, which I have set up to direct the screenreader to the text block once it has appeared.
What seems to be happening when previewing the course (either via the "preview in browser" option or via publishing) is that when the popup text appears, the screenreader (currently NVDA) will read the text block 2 or 3 times in a row instead of just once.
This issue occurs even when I use the "on show hide" method (so objects are not set to "initially hidden"), and regardless of whether I use the "focus" or "go to" actions.
From digging around online, I suspect the issue is related to aria-live. As the issue only occurs for previously hidden text, it seems like it is getting tagged with "aria-live:polite" and is thus being read as a "change" to the page, and then read again when the block is focussed on as the next object in order (though I'm not sure why it's happening 3 times).
Has anyone else encountered this behaviour? Has there been any workarounds?
Discussion (3)
I can see how showing and then setting the focus would be desired, and how it would most likely read the text twice. When the text block is shown it sends the text of the text block off to a queue to be read by the screen reader. This ensures that subsequent showing of other text blocks does not interrupt or skip any previously shown text.
Ideally we would give you a way to clear the aria reading queue. One way you could try to do this is to have a Run JavaScript action after showing the text block that runs this JavaScript:
getDisplayWindow().ariaReadingList.length=0;
This should clear the queue. I have not tested this and there may be a delay on the text being added to the queue. If this happens then it might be possible to add a slight 0.1 delay on the Run JavaScript action to account for this.
Hope this helps and we will look into adding an action to clear the aria reading queue. @troy
Try putting the Run JavaScript action [that I talked about above] on the Text Block and use an On Show trigger, with no delay. I wasn't aware a group was involved. If you could send in your project to support@elblearning.com it would help us figure it out. Please reference this post. Thank you so much and sorry for the inconvenience.
Hi Wheels,
That's a really interesting suggestion,
Unfortunately when I tested it there was no real change to the issue, so I don't think it worked.
I tried placing the action on the button to trigger just after the action that showed the group, and also tested giving it a .1, .2 and .3 delay. I also tried having an additional text block with one word in it before the main one to give it a second to clear the queue, but it ended up reading both out (it read the first text block twice and then the second text block twice). Placing the javascript action on the text block to trigger when it appeared also didn't work.
I decided to try working around it by setting the focus to a button that appears after the text block in the order (so the group that appears is a text block and a button to continue). The idea is, once the aria text reads out the new content, the focus has already moved on so it shouldn't then read it all again.
What ended up happening was, when the group appeared in the preview, the screenreader read the button text (but not calling it a button), then the text block, then the button again (this time calling it a button). I tried removing the alt tags for the button, and when previewing this change it read the text block twice and then the button, despite the focus skipping the text block entirely.
I'm not sure what other methods I can try to prevent the text block or other objects from being read twice once they appear. Is there a different setup I should be using for the accessibility to be working better? Is this behaviour replicable for others?