Библиотека ally.js предназначена для упрощения
работы с доступностью (accessibility) в веб-приложениях. Метод
ally.get предоставляет набор функций для получения
информации о состоянии элементов на странице, их доступности и видимости
для пользователей с особыми потребностями. Ниже представлен подробный
разбор основных методов и их применения.
ally.get.activeElement([context])Возвращает элемент, который в данный момент имеет фокус в пределах указанного context. Если контекст не указан, поиск осуществляется по всему документу.
Параметры:
context (optional) — DOM-элемент или
Document, в пределах которого ищется активный элемент.Особенности:
null, если фокус отсутствует.Пример использования:
const active = ally.get.activeElement();
console.log(active); // <input id="search" />
ally.get.tabbed()Возвращает массив элементов, которые могут быть достигнуты с помощью клавиши Tab. Метод анализирует все интерактивные элементы страницы и фильтрует их по доступности.
Возвращает:
Массив объектов с ключами:
node — сам DOM-элементtabindex — значение атрибута tabindexdisabled — булевое значение, указывающее на
отключённость элементаОсобенности:
display: none или
visibility: hidden).aria-hidden.Пример использования:
const tabElements = ally.get.tabbed();
tabElements.forEach(el => console.log(el.node.tagName));
ally.get.focusable([context])Возвращает все элементы, на которые можно установить фокус. Метод
шире, чем tabbed(), так как включает элементы с
tabindex="-1" и другие интерактивные элементы, доступные
программно.
Параметры:
context (optional) — DOM-узел для ограничения
поиска.Особенности:
Пример использования:
const focusableElements = ally.get.focusable(document.getElementById('modal'));
focusableElements.forEach(el => el.node.focus());
ally.get.ignored([context])Возвращает элементы, которые игнорируются assistive-технологиями, например, экранными читалками.
Особенности:
aria-hidden="true".Пример использования:
const hiddenElements = ally.get.ignored();
hiddenElements.forEach(el => console.log(el.node.id));
ally.get.textNodes([context])Возвращает массив всех текстовых узлов внутри указанного контекста, которые видимы и доступны пользователю.
Особенности:
display: none и
visibility: hidden.Пример использования:
const texts = ally.get.textNodes(document.body);
texts.forEach(node => console.log(node.textContent.trim()));
ally.get.parents(node)Возвращает массив родителей указанного узла до корня документа. Полезно для определения контекста элемента и его взаимодействия с ARIA-атрибутами.
Возвращает:
Массив объектов с ключами:
node — родительский DOM-элементrole — ARIA-роль родителя (если указана)ignored — булево значение, если родитель скрыт от
assistive-технологийПример использования:
const parents = ally.get.parents(document.getElementById('button1'));
parents.forEach(parent => console.log(parent.node.tagName, parent.role));
ally.get.query()Общий метод, который позволяет получить информацию о любом наборе элементов с кастомными фильтрами.
Параметры:
context — DOM-узел для поиска.filter — функция для фильтрации элементов. Должна
возвращать true для включения элемента в результат.Особенности:
tabbed,
focusable, ignored в один запрос.Пример использования:
const interactiveElements = ally.get.query(document.body, node => node.tagName === 'BUTTON' && !node.disabled);
interactiveElements.forEach(el => console.log(el.node.id));
ally.getaria-hidden и стили display: none,
visibility: hidden, что позволяет точно определять
доступные элементы.focusable и tabbed помогает правильно
управлять навигацией через клавиатуру.Эти методы формируют основу для построения инструментов доступности, проверки интерфейсов и автоматизации тестов на соответствие стандартам WCAG. Они позволяют разработчикам создавать динамические, интерактивные и полностью доступные веб-приложения без необходимости вручную анализировать DOM.