#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 также неплохо подходит для бесплатного инструмента.