adobe/react-spectrum

useInteractionModality detects JAWS and NVDA as mouse in Chromium

Open

#10 310 ouverte le 7 juil. 2026

Voir sur GitHub
 (6 commentaires) (1 réaction) (0 assignés)TypeScript (1 500 forks)auto 404
accessibilitybughelp wanted

Métriques du dépôt

Stars
 (15 634 stars)
Métriques de merge PR
 (Métriques PR en attente)

Description

Provide a general summary of the issue here

Scenario: useInteractionModality reports "mouse" when screen reader user interacts GIVEN a user has started their screenreader (JAWS or NVDA) and a chromium browser (Chrome) WHEN the user interacts with the page clicking a button THEN the hook useInteractionModality reports the modality as "mouse"

🤔 Expected Behavior?

JAWS/NVDA + Chromium interactions are detected as virtual

😯 Current Behavior

JAWS/NVDA + Chromium interactions are detected as mouse

💁 Possible Solution

We created a very simple 'codepen' to log the event information for every browser and screen reader, to check if there is any difference in terms of the received information. https://es-d-95332884020260709-019f3c39-f927-7d3c-823e-4328eff26b40.codepen.dev/

We detected that the combination JAWS/NVDA + Chrome throws a clickevent and a pointerdown event after interacting with a button by pressing Enter. In addition, we receive pointerType as mouse.

JAWS/NVDA + Firefox and VoiceOver does not trigger a pointerdown event and the pointerType comes as an empty string, so we can detect the device is assistive technology.

We need another type of check for failing combinations to evaluate them as virtual interactions.


Test scenario

1- Navigate to https://codepen.io/editor/jesusgonzaleza/pen/019f3c39-f927-7d3c-823e-4328eff26b40 2- Start your screen reader 3- Interact with the "Simulate click" button 4- Check the reported data from the event

JAWS + Chrome

Insights: a pointerdown event is triggered and pointerType is mouse

JAWS + Firefox

Insights: it works correctly. a pointerdown event is not triggered and pointerType is an empty string

VoiceOver + Firefox

Insights: it works correctly. a pointerdown event is not triggered and pointerType is an empty string

VoiceOver + Chrome

Insights: it works correctly. a pointerdown event is not triggered and pointerType is an empty string

🔦 Context

We detect if a user is a screen reader user in a SPA. In that case, we focus the title of the page in certain navigations so they are aware of changes. We use useInteractionModality from @react-aria/interactions for some other component related complex accessibility logics.

🖥️ Steps to Reproduce

1- Start JAWS 2- Open Chrome 3- Interact with any button using the screen reader 4- Modality is reported as mouse

Version

3.28.1

What browsers are you seeing the problem on?

Chrome

If other, please specify.

No response

What operating system are you using?

Windows

🧢 Your Company/Team

No response

🕷 Tracking Issue

No response

Guide contributeur