Библиотека Aria-query предназначена для работы с ARIA-атрибутами и ролями в JavaScript, обеспечивая строгую типизацию и стандартизированные наборы данных для доступности веб-приложений. Одним из ключевых аспектов работы с ARIA является правильная обработка устаревших атрибутов, которые были определены в ранних версиях спецификаций WAI-ARIA, но впоследствии признаны deprecated. Неправильное использование таких атрибутов может привести к снижению совместимости с современными скринридерами и другими assistive-технологиями.
В aria-query устаревшие атрибуты представлены в виде отдельного набора данных. Они включают:
aria-dropeffect.string, token, boolean,
integer).Пример структуры устаревшего атрибута:
{
name: 'aria-dropeffect',
type: 'token',
values: ['copy', 'move', 'link', 'execute', 'popup', 'none'],
deprecated: true,
}
Такая структура позволяет инструментам статического анализа кода и библиотекам UI-проверки обнаруживать использование устаревших атрибутов и предупреждать разработчиков.
К числу наиболее часто встречающихся deprecated-атрибутов относятся:
aria-dropeffect – применялся для
обозначения допустимых действий перетаскивания элементов; заменён
концепциями Drag and Drop API.aria-grabbed – указывал, захвачен ли
элемент для drag-and-drop; устарел в пользу современных событий.aria-flowto – использовался для
определения последовательности фокусировки; теперь чаще применяются
нативные методы управления tabindex.aria-activedescendant – хотя
технически ещё поддерживается, его использование рекомендуется
минимизировать для динамически изменяемых списков.Библиотека предоставляет удобные методы для проверки атрибутов на статус устаревания. Например:
import { ariaAttributes } from 'aria-query';
const deprecatedAttrs = Array.from(ariaAttributes)
.filter(([name, attrData]) => attrData.deprecated)
.map(([name]) => name);
console.log(deprecatedAttrs);
// Выведет: ['aria-dropeffect', 'aria-grabbed', ...]
Здесь ariaAttributes возвращает Map, где ключ — имя
атрибута, а значение — объект с его свойствами. Фильтрация по
deprecated: true позволяет формировать список атрибутов,
которые лучше не использовать.
Для обеспечения доступности рекомендуется:
aria-dropeffect и
aria-grabbed на стандартные события Drag and Drop
(dragstart, dragover, drop) и
соответствующие свойства элементов (draggable,
dataTransfer).aria-flowto для управления фокусом.aria-activedescendant, особенно в компонентах с
динамическим обновлением списка, заменяя его программной фокусировкой на
элемент.Интеграция aria-query с инструментами типа eslint-plugin-jsx-a11y позволяет автоматически:
Пример правила ESLint:
"jsx-a11y/no-deprecated-aria": "warn"
Это правило анализирует код на наличие устаревших атрибутов и выводит предупреждения с рекомендациями замены.
Работа с устаревшими атрибутами через aria-query позволяет:
Эффективное применение этой библиотеки гарантирует, что проект будет совместим с современными assistive-технологиями и соблюдает актуальные стандарты WAI-ARIA.