Почему Javascript IF keyCode === клавиша ввода или клавиша пробела не работают с программой чтения с экрана NVDA? - PullRequest
0 голосов
/ 10 сентября 2018

Я работаю над доступностью для сайта клиента и использую JQuery / Javascript, чтобы определить, были ли нажаты клавиши клавиатуры Enter или пробел, что прекрасно работало ...

$(document).addEventListener('keydown', navKeyboardHandler);

navKeyboardHandler = function(e) {
    console.log('a keyboar key was pressed'); // This does work

    if (e.keyCode === 13 || e.keyCode === 32) { // Keyboard Enter OR Spacebar pressed
        console.log('enter or spacebar key pressed ! ! !'); // This does NOT work
    }
};

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

Что в моем выражении IF нужно изменить, чтобы это работало? Любая помощь будет принята с благодарностью.Я тестирую это с Chrome и Firefox на Windows.

Ответы [ 3 ]

0 голосов
/ 11 сентября 2018

Вероятно, это не JavaScript.Это, вероятно, в HTML.Определенные роли и атрибуты aria сообщат программе чтения с экрана, находиться ли в режиме просмотра или в режиме фокусировки (или в режиме приложений).

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

Подробнее о режимах взаимодействия с программой чтения с экрана здесь

Подробнее о режиме просмотра NVDA и режиме фокусировкив Руководство пользователя NVDA

В зависимости от типа создаваемого виджета (если бы вы предоставили больше информации и ваш HTML-код, возможно, я мог бы уточнить), вам может понадобиться добавить другую рольили атрибуты aria, чтобы заставить программу чтения с экрана автоматически переключаться в наиболее подходящий режим.Я рекомендую вам внимательно изучить шаблон WAI-ARIA Design для любого типа создаваемого виджета.

Эта ссылка содержит дополнительную информацию о том, какие виджеты активируют режим фокусировки http://accessibleculture.org/articles/2012/09/aria-widgets-and-focus-forms-mode-support/

0 голосов
/ 22 апреля 2019

Добавьте role = "application" в ваш html-виджет и попробуйте, это работает для меня.

0 голосов
/ 10 сентября 2018

Я обратился к людям в сообществе доступности через их слабый канал: web-a11y.slack.com

и кто-то предоставил приличное решение :

Вероятно, он не сработает, потому что NVDA перехватывает клавиши, если вы находитесь в режиме просмотра, что является нормальным. Если вам нужно было вручную переключиться в режим фокусировки (вставка + пробел - вы услышите звук «пишущей машинки»), код должен пройти.

...