- Success Criterion 2.1.2
- Conformance level A
Widget Where Tab Cycles Internally With No Way Out
2.1.2 — No Keyboard Trap
Scenario
Setting
A customer-support live-chat widget
What’s wrong
Focus loops inside a widget (calendar, editor, embedded iframe) where Tab cycles internally forever.
Example
// modal traps Tab inside with no Escape handler Why it matters
All keyboard and screen-reader users who can become stuck inside a component.
How to test
Tab repeatedly inside a widget (calendar, rich editor, embedded iframe): if Tab cycles internally forever with no way to exit to the rest of the page, it fails.
How to fix
Focus must always be able to leave the component using Tab/Shift+Tab or Esc (or a standard method the user is told about). document.addEventListener('keydown', e => { if (e.key === 'Escape') closeModal(); }); Any component that captures focus needs a standard way out — Escape, or focus cycling back to a close control.
Outcome
On a customer-support live-chat widget, this barrier is gone for all keyboard and screen-reader users who can become stuck inside a component — they no longer have to work around this.
Who is affected
All keyboard and screen-reader users who can become stuck inside a component.
Learn more
- Understanding Understanding document (opens in a new tab)
Related scenarios
- Keyboard Focus Stuck Inside an Embedded Plugin or Widget
- Modal Focus Trap With No Escape Key or Close Button
- Third-Party Embed That Captures and Never Releases Tab Focus
- Script That Yanks Focus Back Every Time the User Tabs Away
- Rich Text Editor That Captures Tab With No Documented Escape
- Autocomplete List That Keeps Recapturing Focus on Every Blur