Библиотека Axe-core предоставляет мощный инструмент
для автоматической проверки доступности веб-страниц. Одним из ключевых
механизмов управления областью анализа являются объекты
include и exclude. Они позволяют точно
задавать элементы DOM, которые должны быть охвачены или исключены из
проверки. Это особенно важно при работе со сложными интерфейсами,
динамическими компонентами и сторонними виджетами.
include — определяет элементы, которые
будут включены в проверку.exclude — определяет элементы, которые
будут исключены из проверки.Эти объекты принимают массивы CSS-селекторов, DOM-элементов или массивы комбинаций селекторов и элементов.
Важно: если include не указан, Axe-core
по умолчанию проверяет весь DOM страницы. Если указан
exclude, все элементы из этого списка будут пропущены, даже
если они попадают под include.
const options = {
runOnly: {
type: 'tag',
values: ['wcag2a', 'wcag2aa']
},
include: [['#main-content'], document.querySelector('.important-section')],
exclude: ['.ads', '#hidden-section']
};
include может содержать:
'#main-content',
'.important-section')document.querySelector('.header'))exclude поддерживает:
Приоритеты включения и исключения Если один
элемент находится в include и одновременно в
exclude, исключение имеет приоритет. Это позволяет точно
отсеивать нежелательные области.
Вложенные элементы Axe-core проверяет
всех потомков включённых элементов, если они не
находятся в exclude. Это упрощает работу с крупными
контейнерами.
Динамические страницы При работе с SPA или
элементами, подгружаемыми через AJAX, объекты include и
exclude должны ссылаться на элементы, существующие в момент
вызова axe.run(). Иначе они будут проигнорированы.
Использование с context В последних
версиях Axe-core можно передавать объект context, который
сочетает include и exclude:
const context = {
include: ['#content', '.article'],
exclude: ['.ad-banner', '.popup']
};
axe.run(context, options).then(results => {
console.log(results.violations);
});
axe.run({
include: ['.article-body'],
exclude: ['.sidebar', '.newsletter']
});
const modal = document.querySelector('#login-modal');
axe.run({ include: [modal] });
axe.run({
exclude: ['.third-party-widget', '.tracking-banner']
});
Неправильный селектор Если указанный CSS-селектор не соответствует ни одному элементу, он игнорируется. Проверка не выдаст ошибку, но этот участок DOM останется не проверенным.
Смешение DOM-элементов и селекторов Axe-core корректно обрабатывает оба варианта, но массив должен быть плоским. Вложенные массивы могут привести к некорректной работе.
Асинхронная подгрузка контента В SPA часто
необходимо вызывать axe.run() после полной загрузки
контента, иначе элементы из include могут отсутствовать в
DOM.
include и excludeОбъекты include и exclude дают полный
контроль над областью проверки Axe-core. Их грамотное использование
позволяет:
Эффективная комбинация этих объектов обеспечивает высокую точность и предсказуемость анализа доступности на страницах любой сложности.