Доступность с помощью программ чтения с экрана и событий фокусировки JavaScript?

#javascript #accessibility #screen-readers

#javascript #Специальные возможности #программы чтения с экрана

Вопрос:

У меня есть форма, в которой есть некоторый JavaScript для перехода к следующему полю при вводе допустимого текста (пример ниже). Мой вопрос в том, как это обрабатывается программой чтения с экрана. Это смутит читателя или он обнаружит изменение фокуса и прочитает новое поле пользователю?

HTML

 <form action="/some/action" method="post" role="form">
    <legend>A Form</legend>
    <label for="first_number">First Number</label>
    <input id="first_number" name="first_number" required type="text" value="">
    <label for="second_number">Second Number</label>
    <input id="second_number" name="second_number" required type="text" value="">
    <button type="submit">Submit</button>
</form>
  

JavaScript

 (function (document, window) {
    function getFocusCallback(current_focus, go) {
        var check = document.getElementById(current_focus);
        var el = document.getElementById(go);
        var pat = new RegExp('^\d{3}$');
        return function callback() {
            if (pat.test(check.value)) {
                el.focus();
            }
        };
    }

    document.getElementById('first_number').addEventListener('input', getFocusCallback('first_number', 'second_number'));
})(document, window);
  

Итак, после того, как пользователь ввел три цифры в первое поле, метод фокусировки вызывается во втором.

Комментарии:

1. Насколько я знаю, когда .focus() происходит, все они принимают обратный вызов и в основном запускаются, document.activeElement поэтому, запустив .focus() (как стандарт a11y), нет необходимости в aria atomic или других изменениях в реальном времени, потому что все они уже используют его в качестве индикатора активного элемента всякий раз, когда он вызывается, например, с помощью табуляции или вручную вызывается через .focus() , но оставляется в качестве комментария, поскольку я не на 100% уверен во всех программах чтения с экрана.

Ответ №1:

Я думаю, что проблема здесь в неожиданном поведении. Для незрячих пользователей любое нестандартное поведение может стать возможным источником путаницы, поскольку оно будет работать иначе, чем любой другой веб-сайт.

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

Пару лет назад была довольно хорошая тема об этом с участием нескольких людей, более осведомленных, чем я. https://lists.w3.org/Archives/Public/w3c-wai-ig/2015AprJun/0162.html

Вам нужно нажать на ссылку «Следующее сообщение» внизу каждой страницы, чтобы прочитать все сообщения в теме.

Комментарии:

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

2. Есть несколько бесплатных программ чтения с экрана, с которыми вы можете работать. Я бы рекомендовал использовать NVDA в сочетании с FireFox или IE. Если вы используете Mac, VoiceOver также неплохо подходит для бесплатного инструмента.