standards-support
standards-support copied to clipboard
JAWS not recognizing role=application, virtual cursor stays activated
Summary
With auto forms mode activated JAWS is not recognizing role=application
when focus is moved to a <canvas>
element. The virtual cursor remains activated with auto forms mode, which prevents custom keyboard interactions from occurring. This behavior happens in multiple scenarios:
Scenario 1 : when the canvas
element is a child of the element with role=application
<div role="application">
<canvas width="500" height="500" tabindex="0" style="border:1px solid #000" aria-label="Canvas Test"/>
</div>
Scenario 2 : when the role=application
is applied directly to the canvas
element:
<canvas role="application" aria-label="My app" tabindex="0"></canvas>
To reproduce this:
- turn on JAWS
- move focus either to the
canvas
either usingfocus()
or usingtab
navigation.
Expected result
The expected behavior is that JAWS announces that this element is an application
and auto forms mode turns off the virtual cursor as expected.
Actual result
Focus is moved to the canvas element but the virtual cursor remains activated.
Example
Codepen 1: https://codepen.io/bmbrandx/pen/bGLRLge Codepen 2: https://codepen.io/WestonThayer/pen/ExQXRLO
Additional Information
JAWS version and build number
2022.2110.60 ILM
Operating System and version
Windows 10 version 19044.1706
Browser and version:
Most recent versions of Firefox, Chrome, and Edge
I wonder if this is a matter of JAWS configuration - I'm not able to reproduce this problem with those codepens. I did use a slightly updated version of JAWS though - 2022.2204.20 ILM to be exact.
@sivakusayan I am using the default JAWS configuration, another person who helped me debug and created the second codepen had similar experiences as me. So at the very least I am not alone on this.
After upgrading it's still not quite working as expected in our application. The virtual cursor is not deactivating as expected when focus is moved to the
I do still have a question about the announcements, should JAWS be announcing when a user enters/reenters a role=application
? Right now with default JAWS settings there is no indication that a user has A) switched out of virtual cursor mode, and B) entered into an application area that will have different behavior than expected.
After upgrading it's still not quite working as expected in our application. The virtual cursor is not deactivating as expected when focus is moved to the element. Is there a specific configuration within the default that could be causing this?
I'm not on the JAWS team so I'll let someone else answer this question. However, as far as the following goes:
I do still have a question about the announcements, should JAWS be announcing when a user enters/reenters a role=application?
I was crawling through JAWS settings the other day to try and find a fix for an issue I was seeing, and I do remember seeing a setting somewhere that allows users to configure whether JAWS announces entering elements with various semantics (including announcement of entering an application). Not sure where it is off the top of my head unfortunately 🙁
Thank you @sivakusayan I look forward to hearing back from the JAWS team about this issue.
Continuing to try and dig on this one, I discovered a bug that was logged that was similar, so I was able to identify the setting to announce the application
:) I am good there now. https://github.com/FreedomScientific/VFO-standards-support/issues/609
Based on that report, I was able to diagnose the behavior better and what I believe is a bug. To provide context of what I am looking at, we have a canvas application where the arrow keys are used for navigation. We do not want these keys passed up to JAWS as we have custom shortcuts implemented and the virtual cursor moves users away from the canvas. I will explain the behavior I am seeing using two scenarios, one that does not function and relies on JAWS to switch modes automatically, and one that does work properly where I manually toggle off the virtual cursor:
Scenario 1, behaving not as expected:
- navigate to canvas element
- beep indicates application is recognized and virtual cursor is supposed to be off
- press arrow keys, and the virtual cursor is still active and moves me to a different location of the application
Scenario 2, behaving as expected:
- navigate to canvas element
- press
insert + z
to toggle off the virtual cursor manually and hear announcement to indicate it is off - press arrow keys, and they behave as expected and trigger our custom keyboard shortcuts
Based off of these two scenarios, I am seeing inconsistent behavior with role=application
. Where the keyboard shortcuts work as expected when I manually toggle off the virtual cursor, but when JAWS triggers this behavior itself things do not behave as expected and the arrow keys get passed to the screen reader.
I will try to get something implemented in codepen, but since it's a somewhat complex behavior I'll have to figure out the best way to do that.