- Success Criterion 2.1.1
- Conformance level A
Control That Ignores Screen Reader Double-Tap Activation
2.1.1 — Keyboard
Scenario
Setting
An insurance company's claims form
What’s wrong
A control responds to touch or mouse but does not activate through screen reader gestures (double-tap with TalkBack/VoiceOver does nothing) — screen reader users can reach it but never use it.
Example
uploadBtn.addEventListener('touchstart', (e) => {
e.preventDefault(); // blocks the synthetic click TalkBack/VoiceOver send after double-tap
openCamera();
}); Why it matters
A claimant using TalkBack can navigate to the upload button and double-tap it, but nothing happens because the handler swallowed the event the screen reader relies on.
How to test
With a screen reader active, use its 'activate' gesture (double-tap on touch, or Enter/Space on desktop) on the control: if the click event never fires, it fails.
How to fix
Listen for click, not raw touchstart, whenever a control should also respond to VoiceOver or TalkBack's double-tap gesture.
uploadBtn.addEventListener('click', () => {
openCamera();
});
// remove the touchstart preventDefault; use pointer events with passive:true if drag gestures are also needed Outcome
A claimant double-taps the upload button with TalkBack and the camera launches instantly.
Who is affected
Screen reader users on mobile can reach the control, but their standard double-tap activation gesture never fires it.
Learn more
- Understanding Understanding document (opens in a new tab)
Related scenarios
- Feature That Only Responds to Mouse Events, Not the Keyboard
- Element That Loses Focus the Instant It’s Reached by Keyboard
- Clickable Element Acting Like a Link With No Real Keyboard Role
- Clickable Div With No Keyboard Focus or Key Handling at All
- Focusable Element That Enter and Space Don’t Actually Activate
- Custom Dropdown That Can’t Be Operated by Keyboard Arrows