Скринридеры корректно взаимодействуют с компонентами, созданными с использованием Haunted, если соблюдены принципы доступности и правильно настроены атрибуты семантики. Haunted не вмешивается в работу ARIA-атрибутов и нативной семантики HTML, поэтому контроль над доступностью остается на стороне разработчика.
Haunted опирается на стандартные веб-компоненты, что позволяет использовать нативные элементы управления и роли. Благодаря этому:
Особое внимание уделяется разметке — кастомные элементы без нативной семантики требуют явного указания ролей и состояний.
Скринридеры полагаются на дерево доступности. Haunted-рекомпозиция DOM не скрывает информации для Accessibility API, поэтому ключевым аспектом остается правильное применение:
Эти атрибуты позволяют озвучивать название элемента, его состояние и изменения интерфейса, а также связывать инструкции между собой.
Haunted обновляет компоненты реактивно. Скринридеры корректно сообщают изменения, если:
Динамика без видимой связи затрудняет озвучивание. Например, изменение текста без aria-live скринридеры могут пропустить.
Создание кастомного элемента, который должен сообщать о своем состоянии:
const Accordion = component(() => {
const [open, setOpen] = useState(false);
return html`
<div>
<button
aria-expanded=${open}
aria-controls="panel"
@click=${() => setOpen(!open)}
>
Детали
</button>
${open ? html`
<div id="panel" role="region">
Содержимое панели
</div>
` : null}
</div>
`;
});
customElements.define('x-accordion', Accordion);
Кнопка озвучивается с корректным состоянием. Панель получает роль region, что делает ее частью доступной структуры.
При работе со скринридерами особое значение имеет логика фокуса. Haunted не внедряет собственный менеджер фокуса, поэтому используются нативные API:
Контроль над фокусом особенно важен при открытии диалогов, модальных окон и выпадающих меню. Скринридеры в таких сценариях ориентируются на активный элемент и состояние доступности соседних узлов.
Открытие модального окна требует:
Без этих действий скринридер продолжает озвучивать посторонние элементы, что создает хаос при навигации.
Интерфейсы, созданные с Haunted, могут содержать реактивные обновления без пользовательского ввода. Для подобных сценариев применяются aria-live:
Например, обновление счетчика уведомлений или прогресса загрузки становится доступным для звуковой озвучки.
Использование корректных HTML-элементов увеличивает предсказуемость:
Такая структура делает пользовательский интерфейс понятным скринридерам без дополнительных ролей.
Некоторые элементы требуют дополнительной информации:
Haunted позволяет обновлять их реактивно, что облегчает построение интерфейсов для вспомогательных технологий.
Некорректное поведение скринридеров может возникать, если:
Главная ошибка — полагаться только на визуальный слой. Скринридеры анализируют структуру и атрибуты.
Анализ взаимодействия со скринридерами проводится посредством:
Дополнительно применяются инструменты статического анализа (axe, Lighthouse) и инспекторы доступности в браузерах. Они выявляют пропущенные роли, неправильные связи и неподдерживаемые состояния.
Компоненты на Haunted совместимы с любым современным скринридером благодаря использованию нативного DOM и веб-компонентов. Доступность полностью зависит от семантики, ARIA-атрибутов, структуры документа и управления фокусом. Формирование корректного дерева доступности обеспечивает точное озвучивание состояния интерфейса и улучшает взаимодействие для пользователей вспомогательных технологий.