Библиотека ally.js предназначена для проверки
доступности элементов веб-страницы и управления фокусом с точки зрения
accessibility. Центральным компонентом является объект
ally, предоставляющий методы проверки видимости,
доступности и фокусируемости элементов. Методы сгруппированы по
функциональным направлениям: проверка состояния элементов, работа с
фокусом, навигация по дереву DOM и вспомогательные утилиты.
ally.is предоставляет функции для определения различных аспектов доступности:
ally.is.focusable(element)
Возвращает true, если элемент может быть сфокусирован с
помощью клавиатуры или программно. Проверяются свойства
tabindex, видимость и интерактивность.
ally.is.tabbable(element)
Проверяет, может ли элемент быть достигнут при навигации с помощью
клавиши Tab. Отличается от focusable, так как учитывает
порядок обхода и скрытые элементы.
ally.is.visible(element)
Определяет, видим ли элемент на странице. Метод учитывает свойства CSS
display, visibility, opacity и
размеры элемента.
ally.is.visibleByStyle(element)
Проверяет видимость элемента исключительно через CSS-свойства, не
учитывая позицию на странице и пересечения с другими
элементами.
ally.is.disabled(element)
Определяет, имеет ли элемент атрибут disabled или находится
в состоянии, запрещающем взаимодействие с ним.
ally.is.focused(element) Возвращает
true, если элемент в данный момент является активным
элементом документа (document.activeElement).
ally.is.labelable(element)
Проверяет, может ли элемент иметь текстовую метку (label),
что важно для accessibility форм.
ally.is.textInput(element)
Определяет, является ли элемент полем ввода текста, включая
<input> с типами text,
email, password и
<textarea>.
ally.is.inDocument(element)
Проверяет, находится ли элемент в DOM текущего документа.
ally.is.focusContainer(element)
Определяет, является ли элемент контейнером для фокусируемых элементов.
Часто используется в модальных окнах и всплывающих меню.
ally.is.focusRestricted(element)
Проверяет, ограничен ли фокус внутри элемента (например, внутри
модального окна с aria-modal).
ally.is.focusedTrap(element)
Проверяет, находится ли элемент внутри активного фокус-трэпа.
ally.is.ariaDisabled(element)
Определяет, имеет ли элемент атрибут
aria-disabled="true".
ally.is.ariaHidden(element)
Проверяет, скрыт ли элемент для скринридеров
(aria-hidden="true"), независимо от его видимости на
экране.
ally.is.ariaLabelable(element)
Проверяет возможность элемента иметь ARIA-метку
(aria-label, aria-labelledby).
ally.is.clickable(element)
Определяет, может ли элемент быть активирован пользователем через мышь
или клавиатуру. Учитываются элементы <button>,
<a> с href, интерактивные элементы и
обработчики событий onclick.
ally.is.disabledOrNotEditable(element)
Возвращает true, если элемент либо заблокирован, либо не
поддерживает редактирование (например,
<input readonly>).
ally.is.editable(element) Проверяет
возможность редактирования содержимого элемента, включая
contenteditable и текстовые поля.
ally.is.scrollable(element)
Определяет, можно ли прокручивать содержимое элемента по вертикали или
горизонтали.
ally.is.inert(element) Проверяет,
заблокировано ли взаимодействие с элементом через inert или
аналогичные техники.
ally.is.focusableGroup(element)
Определяет, является ли элемент контейнером, который управляет группой
фокусируемых элементов (например, списки табов).
ally.is.navigable(element)
Проверяет возможность навигации к элементу через любые интерактивные
действия: Tab, мышь, скрипты.
ally.is.textContent(element)
Определяет, содержит ли элемент текстовый контент, что важно для
проверки читаемости и доступности текста.
ally.is.visibleByBounding(element)
Проверяет видимость элемента через расчёт его прямоугольника
(getBoundingClientRect) и проверку пересечения с
родителями.
ally.is.describedBy(element)
Проверяет наличие атрибутов aria-describedby, указывающих
на вспомогательные тексты для доступности.
ally.is.labelledBy(element)
Проверяет наличие атрибутов aria-labelledby, обеспечивающих
правильное обозначение элемента.
Методы ally.is не изменяют состояние DOM и не устанавливают фокус. Они предназначены исключительно для проверки состояния элементов и их соответствия требованиям доступности. Их можно комбинировать для создания комплексных проверок, например, фильтрации всех tabbable и видимых элементов на странице, выявления элементов с ARIA-метками или проверки, находятся ли элементы внутри модальных окон с ограничением фокуса.
Использование этих методов в связке с ally.query и ally.focus позволяет строить скрипты для управления доступностью, тестирования UI и реализации кастомных компонентов с соблюдением стандартов accessibility.