Вопрос или проблема
Я использовал демоверсию инструмента PowerMapper онлайн, чтобы просканировать свои страницы, и он представил следующую проблему для страницы, которую я собираюсь объяснить.
По сути, у меня есть страница резервного варианта для клиентов, которые хотят просмотреть мой веб-сайт и у которых отключен JavaScript.
Такие ссылки предназначены для выполнения запланированных действий только при включенном JavaScript. Я объясню это в коде для тех, кто запутался:
<a ID="alink" href="http://www.example.com/javascript-error">Нажмите</a>
<script>
function dosomething(){alert("Ссылка обрабатывается. Это предусмотрено");}
document.getElementById("alink").addEventListener("click",dosomething);
</script>
Поскольку страницы с ошибками JavaScript – это то, что людям не нужно, было бы неразумно создавать множество ссылок на них или добавлять карту сайта, или даже позволять людям искать эту страницу. Поэтому я пытаюсь найти решение, не получая ошибку WCAG, описанную выше.
Не думаю, что было бы разумно выдавать код состояния HTTP, отличный от 200, для этих страниц, потому что это страницы, и Google может дать мне небольшое наказание за это.
Кто-нибудь имеет идеи, как я могу это исправить?
Ответ или решение
Обработка страниц резервного варианта без использования JavaScript с соблюдением стандартов WCAG (Web Content Accessibility Guidelines) представляет собой вызов, особенно когда страницы предназначены только для пользователей, у которых отключен JavaScript. Ваша проблема заключается в том, что ссылки, активируемые JavaScript, могут нарушать рекомендации WCAG, если они не предоставляют альтернативный путь для выполнения той же задачи. Вот несколько предложений для решения этой проблемы.
1. Предоставление альтернативного контента
Для всех ссылок, которые зависят от JavaScript, создайте явные альтернативы. Например, вместо того, чтобы просто полагаться на JavaScript для выполнения действий, предоставьте пользователям явные текстовые ссылки или кнопки, которые выполняют ту же задачу при отключенном JavaScript:
<a href="http://www.example.com/alternative-action">Выполнить действие</a>
<noscript>
<p>Пожалуйста, активируйте JavaScript для полноценной работы сайта.</p>
</noscript>
2. Обработка событий без JavaScript
Если у вас есть ссылки, которые должны выполнять определенные действия, попробуйте реализовать их функциональность на стороне сервера. Например, если действие может быть выполнено на сервере, просто создайте форму, которая отправляет эти данные без использования JavaScript:
<form action="http://www.example.com/process" method="post">
<input type="submit" value="Выполнить действие">
</form>
3. Избегайте скрывать функциональность
Не забудьте, что если пользователи с отключенным JavaScript не могут выполнить действие, то ваше приложение должно корректно уведомить их об этом. Использование тега <noscript>
может помочь в этом:
<noscript>
<p>Функциональность этой страницы зависит от JavaScript. Пожалуйста, включите его для использования всех возможностей.</p>
</noscript>
4. Структурирование контента
Создайте отдельные странички для пользователей, которых не может обслуживать JavaScript. Например, вместо страницы с ошибкой JavaScript вы можете создать простую страницу с сообщением о том, что для корректной работы сайта требуется активировать JavaScript, включающую полезные ссылки на другие страницы сайта.
5. Код состояния HTTP
Как вы уже упомянули, важно не использовать код состояния, отличный от 200 для таких страниц. Поддержание кода 200 позволяет Google индексировать страницу, но старайтесь обеспечить, чтобы содержание этой страницы было информативным и полезным. Это поможет избежать понижения рангов в поисковой выдаче.
Заключение
Соблюдение стандартов WCAG и предоставление функциональности для пользователей с отключенным JavaScript требует дополнительных усилий на проектирование, но это возможно. Основное внимание следует уделить предоставлению альтернативных методов взаимодействия и информированию пользователей о необходимых требованиях. Важно делать сайт доступным для всех групп пользователей, включая тех, кто не может или не хочет использовать JavaScript.