Библиотека ally.js предназначена для улучшения доступности веб-приложений, предоставляя инструменты для управления фокусом, обнаружения и обработки элементов интерфейса. Центральным элементом работы с библиотекой является её система конфигурации, которая позволяет гибко настраивать поведение функций, соответствующих требованиям конкретного проекта.
Конфигурация в ally.js строится вокруг объектов опций, передаваемых в методы библиотеки. Каждый метод имеет набор предопределённых настроек, которые могут быть изменены для контроля логики обхода DOM, управления фокусом и определения видимости элементов.
Конфигурация представляет собой обычный JavaScript-объект. Пример базовой структуры:
const options = {
context: document, // Контекст поиска элементов
includeContext: false, // Включать ли сам контекст в результаты
filter: null, // Функция фильтрации элементов
strategy: 'strict', // Стратегия обхода DOM
};
document или конкретный контейнер.true, если элемент нужно включить.strict (только элементы, полностью видимые и
доступные) и all (включает скрытые или неактивные
элементы).ally.js предоставляет несколько подходов к определению того, какие элементы могут получать фокус. Основные параметры:
tabindex при обходе элементов.Пример конфигурации для метода получения всех фокусируемых элементов:
const focusableOptions = {
context: document.body,
includeOnlyTabbable: true,
strategy: 'strict',
filter: function(element) {
return !element.classList.contains('no-focus');
}
};
Функции ally.js учитывают видимость элементов и их доступность для пользователей с ограничениями. Ключевые опции:
true (только видимые),
false (все элементы), 'strict' (исключает
элементы с opacity:0 или display:none).Пример использования:
const visibleOptions = {
context: document.querySelector('#app'),
visible: 'strict',
ignoreScroll: true
};
Фильтры предоставляют максимальную гибкость при конфигурации:
true или false.disabled, hidden) для
фильтрации.Пример комбинированного фильтра:
function customFilter(element) {
return element.offsetParent !== null && !element.hasAttribute('aria-hidden');
}
const optionsWithFilter = {
context: document.body,
filter: customFilter
};
Некоторые методы ally.js, связанные с динамическим управлением фокусом и доступностью, поддерживают параметры событий:
focus,
blur, keydown и т.д.).Пример настройки наблюдателя за фокусом:
ally.on.focus(function(event, element) {
console.log('Фокус на элементе:', element);
}, { context: document.body });
Пример глобальной конфигурации:
ally.defaults = {
strategy: 'strict',
includeContext: false,
visible: true
};
Конфигурация и опции ally.js обеспечивают полный контроль над поведением элементов интерфейса, позволяя создавать высокодоступные и предсказуемые пользовательские интерфейсы.