TGViewer
Всё про доступность интерфейсов Всё про доступность интерфейсов @accessibilityofinterfaces · 7 subscribers
Post #136 9
Модальное окно должно забирать фокус при открытии

В GitHub появился хороший маленький кейс по Yeliztli: в приложении есть семь выезжающих панелей с деталями генетических вариантов. Визуально они ведут себя как модальные окна: открываются поверх страницы, есть затемнение и закрытие по Escape.

Но в issue #703 автор показывает неприятную разницу: четыре панели вообще не объявлены как role="dialog" и aria-modal="true", а ни одна из семи не управляет фокусом.

Что это значит на практике: пользователь с клавиатурой или экранным доступом открывает панель, а фокус не переходит внутрь. Дальше Tab может увести его в затемнённую страницу под панелью. Для зрячего человека это выглядит как один активный слой, а для пользователя ассистивных технологий получается два смешанных слоя: панель открыта, но навигация уже гуляет по фону.

Это особенно неприятно в интерфейсах с важными данными. Если панель показывает детали варианта, лекарства, риска или другого сложного объекта, пользователь должен понимать: где он сейчас, что открылось, как пройти по содержимому и как безопасно вернуться назад.

Я бы проверял такие компоненты не по признаку «оно красиво открылось», а по полному сценарию:

- экранный доступ объявляет диалог;
- фокус при открытии попадает внутрь панели;
- Tab не уходит в фон;
- Escape и кнопка закрытия работают предсказуемо;
- после закрытия фокус возвращается на элемент, который открыл панель.

Если этого нет, модальное окно существует только для глаз. Для части пользователей это не слой интерфейса, а ловушка или, наоборот, дырка, через которую фокус проваливается в старую страницу.

Источник: bioedca/Yeliztli#703
GitHub A11y: slide-in detail panels — 4 of 7 lack role=dialog/aria-modal (carrier/cancer/cardiovascular/rare-variants) and none manage… Summary The app's slide-in detail panels are modal overlays (full-screen backdrop + Escape-to-close), but their dialog semantics are inconsistent and incomplete for assistive tech: 4 of the 7 p...
More from @accessibilityofinterfaces
  1. Sep 1, 2026Форма, которую заполняют в 3 ночи В issue PaedsMom описали проверку формы консультации: ей…
  2. Aug 31, 2026Видео без дорожки субтитров — это не «потом допишем текст». Свежий сигнал из GitHub: в про…
  3. Aug 31, 2026Видео без дорожки субтитров — это не «потом допишем текст». В SCORM-проекте edumints-scorm…
  4. Aug 30, 2026Свежий баг в Highcharts: график закрыли, а accessibility-таймеры продолжают работать. В is…
  5. Aug 30, 2026Highcharts: график закрыли, а accessibility-таймеры ещё говорят. Свежий баг про отложенные…
  6. Aug 29, 2026Reduced motion как настройка продукта В ProgressRPG завели issue про отдельный переключате…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →