Разбор

Претензию выписывает робот

Обычно историю о доступности рассказывают со стороны пользователя: незрячий не смог оформить заказ. Здесь нитка другая — деньги и автоматика. Мы смотрим, что изменилось в экономике претензии, когда проверку сайта научились делать без человека, и почему самый популярный ответ бизнеса ухудшает его положение.

Как витрина стала общественным местом

Десятилетиями Раздел III американского закона о правах граждан с ограниченными возможностями читали буквально: пандус к крыльцу, вывеска шрифтом Брайля, оборудованный санузел. Всё это про здание. Перелом произошёл, когда федеральные суды поставили коммерческий сайт в один ряд с «общественным местом».

Следствие простое и жёсткое: если ресурс продаёт товар, принимает бронирование или просто раздаёт сведения широкой публике, он обязан открываться людям с ограничениями зрения, слуха, моторики и когнитивных функций. Обязанность возникла не из нового текста закона, а из его прочтения — и распространилась сразу на всех, кто уже был в сети.

Асимметрия, из которой вырос конвейер

Дальше сработала разница в стоимости проверки. Чтобы придраться к магазину на углу, нужен человек: доехать, зайти, замерить, зафиксировать. Чтобы придраться к сайту, не нужно ничего, кроме машины, которая никогда не спит. Юридические фирмы, живущие массовыми исками, это увидели раньше остальных.

Результат измерим: за последние годы число претензий по Разделу III, связанных с недоступностью сайтов, выросло больше чем на триста процентов. Задело практически всех — торговлю, гостиницы, финансы, медицину и небольшие местные сервисы. И сигналом чаще всего служит не жалоба покупателя, а официальная досудебная бумага с требованием заплатить: обычно речь идёт о сумме от десяти до пятидесяти тысяч долларов, а в качестве альтернативы предлагается иск в федеральный суд.

Что именно ищет краулер

Робот не оценивает удобство. Он проверяет четыре вещи, каждая из которых видна в разметке. Первое — изображение без альтернативного описания: без атрибута с текстом программа чтения с экрана не сможет сказать незрячему, что на картинке. Второе — поле ввода, к которому не привязана метка: строка поиска, форма обратной связи, подписка на рассылку.

Третье считается арифметически: стандарт требует, чтобы обычный текст отличался от фона по контрасту не меньше чем в четыре с половиной раза, и таблицы стилей проверяются расчётом. Четвёртое — клавиатура: человек с нарушением моторики ходит по странице табуляцией и вводом, и если меню так не открывается, а заказ так не подтверждается, соответствия нет. Все четыре пункта взяты из международного руководства WCAG версии 2.1 уровня AA.

Дальше работает не юрист, а программа: она выкачивает данные владельца домена, подставляет их в готовый шаблон жалобы и печатает требование. Одна фирма выдаёт сотни таких бумаг в неделю, и себестоимость каждой стремится к нулю.

Иконка с коляской как опознавательный знак

Получив письмо, владелец ищет быстрый выход — и находит его в виде стороннего плагина на JavaScript, который обычно висит кружком в углу экрана. Обещание звучит идеально: одна строчка кода, и искусственный интеллект приводит сайт в полное соответствие.

Технически это не починка, а грим. Исходные HTML и CSS остаются прежними; накладка живёт в браузере посетителя и пытается на лету перестраивать объектную модель страницы. Поверхностного слоя хватает на простое и не хватает на сложное: динамическое меню, всплывающее окно, корзина оформления заказа остаются непонятными для вспомогательных программ.

Хуже того, накладка мешает тем, ради кого поставлена. Незрячие пользуются не панелькой на сайте, а своим настроенным софтом — JAWS, NVDA, VoiceOver. Виджеты с ним конфликтуют и перехватывают управление клавиатурой, поэтому многие такие панели просто отключают или блокируют.

Почему заплатка притягивает иск

Главный парадокс — юридический. Присутствие виджета читается в коде страницы с первого взгляда, и сканеры истцов настраивают ровно на такие сайты. Для стороны обвинения это готовый аргумент: владелец знал о проблеме и выбрал дешёвую накладку вместо исправления. Множество американских судов уже признали виджеты недостаточными, а компании с такими виджетами проиграли сотни дел.

Побочные издержки идут довеском. Тяжёлый сторонний скрипт замедляет загрузку и портит показатели Core Web Vitals, так что влияние на поисковую выдачу оказывается нейтральным в лучшем случае и отрицательным в худшем.

Починка, у которой четыре этажа

Альтернатива описана в статье как пакет AIfa Shield студии AIfa Works и устроена ровно наоборот: правится сам исходный код. Первый этаж — смысловая разметка. Безликие контейнеры заменяются тегами, которые сами объясняют своё назначение: шапка, навигация, основная область, раздел, подвал. Заголовки выстраиваются строгой лестницей от первого уровня к шестому. Кнопки оформляются кнопками, ссылки — ссылками, и клавиатурный фокус начинает работать по умолчанию, без единой строки на его поддержку.

Второй этаж — атрибуты ARIA для тех элементов, у которых нет стандартного аналога. Роль и назначение произносятся вслух через подписи и связки с описанием, состояние раскрывающегося списка отражается признаком «развёрнут» или «свёрнут», а чисто декоративные иконки прячутся от чтения, чтобы не утомлять слушателя лишним.

Третий этаж — управление без мыши. Фокус ходит по элементам в осмысленном порядке, в самом верху появляется ссылка перехода к основному содержимому, чтобы не выслушивать меню на каждой странице, активный элемент подсвечивается заметно и контрастно, а из всплывающего окна всегда есть выход по клавише отмены. Ловушек, из которых клавиатурой не выбраться, быть не должно.

Четвёртый этаж — цвет. Контраст пересчитывается для всех текстовых элементов и подгоняется под требование стандарта: четыре с половиной к одному для обычного текста и три к одному для крупных заголовков. Это адресовано не только незрячим, но и слабовидящим, и людям с нарушением цветовосприятия.

Сборка, которая обязана падать

Доступность легко сделать и так же легко потерять на следующем релизе. Поэтому в статье описана не разовая правка, а два постоянных механизма. Серверная отрисовка в Next.js 14 отдаёт готовую смысловую разметку сразу — и программе чтения, и поисковому роботу; ждать сборки страницы в браузере никому не приходится.

Второй механизм важнее. Автоматическая проверка встраивается в конвейер сборки: нашлась ошибка доступности — сборка прерывается, и код до рабочего сервера не доезжает. Это переводит доступность из разряда обещаний в разряд условий выпуска. И в отличие от накладки, которая добавляет вес, чистка кода его убирает, что видно по скорости загрузки и оценке Lighthouse.

Кому это выгодно, кроме юристов

Расходы на такую переделку окупаются не только тишиной со стороны истцов. Около пятнадцати процентов населения мира живёт с теми или иными ограничениями по здоровью — это не благотворительная сноска, а сегмент рынка, который недоступный сайт отсекает механически.

Второй эффект технический. Поисковый робот читает страницу примерно так же, как программа экранного доступа: по смысловой разметке, альтернативным описаниям картинок и структуре заголовков. Что понятно одному, понятно и другому. Третий эффект репутационный, и он тоже считается: забота о доступе видна снаружи и работает на доверие.

Где проходит граница обещания

Здесь важно не проскочить оговорку, которую делает сама статья. В сравнении накладки и нативной починки юридическая защита второй названа высокой — но с прямым уточнением: нативная доступность снижает риск исков, а не устраняет его полностью. Студия описана как нацеленная на соответствие уровню AA, и результатом названо существенное снижение юридических рисков.

Это правильная формулировка, и её стоит запомнить именно в таком виде. Соответствие стандарту — состояние кода, а не индульгенция: подать претензию может кто угодно и когда угодно. Разница в том, чем на неё отвечать. У сайта с виджетом ответом будет сам виджет, уже признанный судами недостаточным. У сайта с исправленной разметкой — история сборок, в которой каждая проверка проходила до выкладки.

Дверь, в которую может войти не всякий, — это не дверь, а выбор, сделанный за другого.— Коан №32, Максим Валентинович Галатин

Короткий вывод

Экономика претензии изменилась раньше, чем изменились сайты. Проверка стала бесплатной для проверяющего, а исправление осталось платным для владельца — и весь рынок быстрых накладок вырос именно в этом зазоре. Накладка закрывает тревогу, но не закрывает разметку, и вдобавок помечает сайт как удобную цель.

Единственный ответ, который держится под нагрузкой, скучен: смысловые теги, подписи для нестандартных элементов, работающая клавиатура, честный контраст — и автоматическая проверка, которой разрешено ронять сборку.

Первоисточник

Полный материал — девять минут чтения: сравнительная таблица накладки и нативной починки по пяти параметрам, полный перечень атрибутов ARIA и разбор интеграции доступности в архитектуру Next.js 14.