• 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