Bootstrap-select недоступен для экранных считывателей, таких как NVDA. Выпадающие списки читаются как ПУСТО, ПУСТО, ПУСТО. Как это исправить?

Вопрос или проблема

Попробуйте код ниже в браузере с NVDA.

Обычный HTML выпадающий список select работает как ожидалось: экранный считыватель NVDA читает отдельные элементы меню, когда вы перемещаетесь вверх или вниз с помощью клавиш курсора или клавиши TAB и сообщает, сколько элементов в списке и где вы находитесь в списке.

Различные версии bootstrap-select совсем не работают – экранный считыватель читает ПУСТО, ПУСТО, ПУСТО на протяжении всего меню и не говорит, где вы находитесь или сколько элементов в списке.

Я использую Bootstrap-select версии v1.13.18

ПЕРЕЙТИ В виджет bootstrap-select с возможностью поиска

NVDA ГОВОРИТ: ничего не выбрано – комбинированный блок – ничего не выбрано – свернуто – открывает список

КЛАВИША ПРОБЕЛ – ничего не делает
NVDA ГОВОРИТ: пробел

КЛАВИША ВНИЗ – открывает меню
NVDA ГОВОРИТ: поисковый комбинированный блок – свернуто – имеет автозаполнение – редактируемый – пусто

КЛАВИШИ ВВЕРХ/ВНИЗ
NVDA ГОВОРИТ: пусто – пусто – пусто – пусто


ПЕРЕЙТИ В обычный виджет bootstrap-select

NVDA ГОВОРИТ: ничего не выбрано – комбинированный блок – ничего не выбрано – свернуто – открывает список

КЛАВИША ПРОБЕЛ – ничего не делает
NVDA ГОВОРИТ: пробел

КЛАВИША ВНИЗ – открывает меню
NVDA ГОВОРИТ: развернуто

КЛАВИШИ ВВЕРХ/ВНИЗ
NVDA ГОВОРИТ: <никакой речи – не читает ни один элемент меню>


ПЕРЕЙТИ В обычный виджет select

NVDA ГОВОРИТ: комбинированный блок – свернут

КЛАВИША ПРОБЕЛ – открывает меню
NVDA ГОВОРИТ: пробел – комбинированный блок – развернут – список – элемент списка 1 из 13

КЛАВИША ВВЕРХ/ВНИЗ – < текст элемента меню >
NVDA ГОВОРИТ: < текст следующего/предыдущего элемента меню >

КЛАВИШИ ВВЕРХ/ВНИЗ
NVDA ГОВОРИТ: < текст элемента меню > < позиция > из 13


Это никогда не тестировалось с экранными считывателями для обеспечения соответствия требованиям или даже для базовой функциональности или есть что-то, что не хватает в коде, что мне нужно добавить?

<h3>Тест ARIA простого выпадающего списка</h3>

<h4>версия bootstrap-select - с поиском</h4>

<select class="selectpicker" data-container="body" name="area_of_expertise" id="area_of_expertise" multiple="multiple" data-live-search-style="contains" data-live-search-normalize="true" data-live-search-placeholder="Поиск" data-live-search="true" data-width="fit">
  <option value="49033">  Науки о жизни&nbsp;&nbsp;</option><option value="49041"> &nbsp;&nbsp;&nbsp;&nbsp; Сельскохозяйственные и биологические науки&nbsp;&nbsp;</option><option value="49042"> &nbsp;&nbsp;&nbsp;&nbsp; Биохимия, Генетика и Молекулярная биология&nbsp;&nbsp;</option><option value="49043"> &nbsp;&nbsp;&nbsp;&nbsp; Иммунология и Микробиология&nbsp;&nbsp;</option><option value="49034">  Науки о здоровье&nbsp;&nbsp;</option><option value="49044"> &nbsp;&nbsp;&nbsp;&nbsp; Медицина&nbsp;&nbsp;</option><option value="49045"> &nbsp;&nbsp;&nbsp;&nbsp; Сестринское дело&nbsp;&nbsp;</option><option value="49046"> &nbsp;&nbsp;&nbsp;&nbsp; Ветеринария&nbsp;&nbsp;</option><option value="49040">  Физические науки&nbsp;&nbsp;</option><option value="49047"> &nbsp;&nbsp;&nbsp;&nbsp; Химическая инженерия&nbsp;&nbsp;</option><option value="49048"> &nbsp;&nbsp;&nbsp;&nbsp; Компьютерные науки&nbsp;&nbsp;</option><option value="49049"> &nbsp;&nbsp;&nbsp;&nbsp; Земля и планетарные науки&nbsp;&nbsp;</option>
</select>

<h4>версия bootstrap-select - без поиска</h4>

<select class="selectpicker" data-container="body" name="area_of_expertise" id="area_of_expertise" multiple="multiple" data-width="fit">
  <option value="49033">  Науки о жизни&nbsp;&nbsp;</option><option value="49041"> &nbsp;&nbsp;&nbsp;&nbsp; Сельскохозяйственные и биологические науки&nbsp;&nbsp;</option><option value="49042"> &nbsp;&nbsp;&nbsp;&nbsp; Биохимия, Генетика и Молекулярная биология&nbsp;&nbsp;</option><option value="49043"> &nbsp;&nbsp;&nbsp;&nbsp; Иммунология и Микробиология&nbsp;&nbsp;</option><option value="49034">  Науки о здоровье&nbsp;&nbsp;</option><option value="49044"> &nbsp;&nbsp;&nbsp;&nbsp; Медицина&nbsp;&nbsp;</option><option value="49045"> &nbsp;&nbsp;&nbsp;&nbsp; Сестринское дело&nbsp;&nbsp;</option><option value="49046"> &nbsp;&nbsp;&nbsp;&nbsp; Ветеринария&nbsp;&nbsp;</option><option value="49040">  Физические науки&nbsp;&nbsp;</option><option value="49047"> &nbsp;&nbsp;&nbsp;&nbsp; Химическая инженерия&nbsp;&nbsp;</option><option value="49048"> &nbsp;&nbsp;&nbsp;&nbsp; Компьютерные науки&nbsp;&nbsp;</option><option value="49049"> &nbsp;&nbsp;&nbsp;&nbsp; Земля и планетарные науки&nbsp;&nbsp;</option>
</select>

<h4>Обычная версия HTML</h4>

<select >
  <option></option><option value="49033">  Науки о жизни&nbsp;&nbsp;</option><option value="49041"> &nbsp;&nbsp;&nbsp;&nbsp; Сельскохозяйственные и биологические науки&nbsp;&nbsp;</option><option value="49042"> &nbsp;&nbsp;&nbsp;&nbsp; Биохимия, Генетика и Молекулярная биология&nbsp;&nbsp;</option><option value="49043"> &nbsp;&nbsp;&nbsp;&nbsp; Иммунология и Микробиология&nbsp;&nbsp;</option><option value="49034">  Науки о здоровье&nbsp;&nbsp;</option><option value="49044"> &nbsp;&nbsp;&nbsp;&nbsp; Медицина&nbsp;&nbsp;</option><option value="49045"> &nbsp;&nbsp;&nbsp;&nbsp; Сестринское дело&nbsp;&nbsp;</option><option value="49046"> &nbsp;&nbsp;&nbsp;&nbsp; Ветеринария&nbsp;&nbsp;</option><option value="49040">  Физические науки&nbsp;&nbsp;</option><option value="49047"> &nbsp;&nbsp;&nbsp;&nbsp; Химическая инженерия&nbsp;&nbsp;</option><option value="49048"> &nbsp;&nbsp;&nbsp;&nbsp; Компьютерные науки&nbsp;&nbsp;</option><option value="49049"> &nbsp;&nbsp;&nbsp;&nbsp; Земля и планетарные науки&nbsp;&nbsp;</option>
</select>

Ответ или решение

Чтобы обеспечить правильную доступность для экранных считывателей, таких как NVDA, при использовании библиотеки bootstrap-select необходимо выполнить несколько шагов. Давайте рассмотрим возможные решения проблемы, когда элементы select читаются как "BLANK" и не предоставляют пользователю необходимую информацию.

1. Убедитесь, что используются правильные атрибуты ARIA

Bootstrap-select может не всегда автоматически добавлять необходимые атрибуты ARIA, такие как aria-label и role. Убедитесь, что ваш выпадающий список настроен правильно. Пример:

<select class="selectpicker" 
        name="area_of_expertise" 
        id="area_of_expertise" 
        multiple="multiple"
        aria-label="Выбор области экспертности" 
        aria-haspopup="true" 
        role="combobox">
    <option value="49033">Life Sciences</option>
    <!-- Другие опции -->
</select>

2. Удалите ненужные пробелы и символы

Избегайте использования лишних пробелов и html-сущностей ( ) в значениях option. Это может сбивать с толку экранные считыватели. Правильный код должен выглядеть так:

<option value="49033">Life Sciences</option>
<option value="49041">Agricultural and Biological Sciences</option>
<!-- Другие опции -->

3. Обновите версию bootstrap-select

Проверьте, используете ли вы последнюю версию bootstrap-select. Возможно, в новых версиях были исправлены ошибки, связанные с доступностью и поддержкой экранных считывателей.

4. Настройка обработчиков событий

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

$('.selectpicker').selectpicker({
    // настройки bootstrap-select
    liveSearch: true,
    noneResultsText: 'Не найдено результатов',
    // другие настройки
}).on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) {
    // Обновление ARIA атрибутов после изменений
});

5. Проверьте поддержку разных экранных считывателей

Проблема может зависеть от конкретной реализации и версии экранных считывателей. Проверьте, как ваш элемент ведет себя в других популярных считывателях (например, JAWS, VoiceOver) на разных браузерах.

6. Тестирование доступности

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

Следуя этим шагам, вы сможете улучшить доступность ваших пользовательских интерфейсов, созданных с использованием bootstrap-select, и обеспечить, чтобы они работали должным образом с экранными считывателями, такими как NVDA.

Оцените материал
Добавить комментарий

Капча загружается...