Это сообщение приходит из правил HTML_CodeSniffer (которые могут использоваться самостоятельно или внутри другого инструмента, такого как pa11y ).Вы можете увидеть отчет, вставив свой HTML-код в инструмент на домашней странице HTML_CodeSniffer .
Первое, что нужно отметить, это то, что он сообщается как предупреждение ,не ошибка , как сказал ваш вопрос.Это не явный сбой WCAG, но его можно улучшить, поэтому давайте посмотрим, как это сделать.
Предупреждение относится к критерию успеха WCAG 4.1.2 " Имя, Роль, Значение ».Это означает, что вспомогательная технология (например, программа чтения с экрана) обладает всей необходимой информацией, чтобы пользователи могли правильно понимать этот элемент управления:
- Имя: что это за ввод называется , т.е. какую часть информации предоставляет пользователь.В данном случае это «Вход в состояние».
- Использование
aria-label
для этого нормально, но помогает только пользователям программы чтения с экрана.Я рекомендую заменить это на видимое <label for="filterState">
, чтобы все пользователи могли его понять.
- Роль: какой это тип ввода,Здесь это выпадающий селектор.
- Достаточно использовать элемент
<select>
.Удалите атрибут role="listbox"
- он здесь не нужен.(Атрибут role в основном предназначен для написания пользовательских элементов управления в JS.)
- Значение: Это та часть, о которой HTML_CodeSniffer выдает предупреждение.Это означает текущее значение ввода, чтобы пользователи понимали, что они выбрали.
- Для HTML
<select>
это означает добавление атрибута selected
к элементу <option>
. - Это нормально, если начальное значение не определено.Вот почему оно классифицируется как предупреждение, а не ошибка.
- В этом случае, поскольку есть опция «все», будет полезно пометить эту опцию как
selected
, когда страница впервые отображаетсяпользователю. Это заставит предупреждение исчезнуть.
Я не знаю, почему у вас здесь есть атрибут contenteditable
.Вы также можете удалить это тоже.