Общение с помощью программы экранного доступа

Привет,

Я попробую это позже, однако это не решение, так как вы не выполняете действия, которые выполнил бы реальный скринридер. Поскольку я перехожу к конкретному сообщению, можно предположить, что я хочу прочитать его. Клавиша Tab — это не команда чтения, а способ переместить фокус на следующий элемент, который может получить фокус. Командой чтения было бы использование стрелки вниз или команды «Сказать всё», специфичной для скринридера. По крайней мере, стрелка вниз — моя предпочтительная команда чтения — не работает: фокус находится не там, где он визуально должен быть, а обычно перед списком сообщений.

Конечно, Tab может быть «грязным» способом исправить эту ошибку, но не как само решение проблемы.

2 лайка

Спасибо @thoeg @nolan, очень ценю. Я, кажется, понял, в чём проблема. Сейчас мы используем пустой элемент span для установки фокуса на пост. У этого элемента установлены атрибуты aria-hidden=true и tabindex=-1, и я полагаю, что из-за этого он невидим для программ чтения с экрана.

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

2 лайка

Привет,

Это имеет смысл. Ariahidden должен скрывать элемент, а значение -1 предотвращает получение им фокуса. Если бы этот элемент передавал фокус на заголовок раздела, это было бы приемлемо. Было бы интересно посмотреть, что произойдет, если просто установить tabindex=0,

Да, я вас слышу, @anni_anni, мы это исправим. На прошлой неделе я сделал первую попытку, но пришлось откатить изменения, так как они вызвали нежелательные побочные эффекты. Очень скоро попробую с другим подходом.

1 лайк

Есть какие-то новости по этому вопросу? Определённо ещё не решено!
Клаус

1 лайк

Да, это ещё не решено. У меня есть предварительный PR здесь: A11Y: fix setting focus to a post by pmusaraj · Pull Request #23367 · discourse/discourse · GitHub, сейчас жду внутренней обратной связи.

3 лайка

Хорошо, наконец-то ещё одна попытка исправления этой проблемы была объединена. В текущей реализации фокус устанавливается на первый доступный для фокусировки элемент в сообщении, которым в большинстве случаев является имя автора сообщения. При переходе к сообщению и нажатии Tab в Chrome это должно выглядеть так:

Пожалуйста, попробуйте это здесь, на meta, и сообщите, если возникнут проблемы.

3 лайка

Я всё ещё наблюдаю старое некорректное поведение на Meta и community.fly.io в Chrome, но могу подтвердить, что исправление работает на нашем сайте discourse.team. Запускаются ли они на разных версиях Discourse? Я использую ту же версию Chrome с тем же профилем.

Спасибо.

Хм, все три сайта могут работать на слегка разных версиях Discourse, но, полагаю, во всех них присутствует изменение, упомянутое выше. В частности, Meta всегда актуальна и синхронизирована с последними изменениями в нашей ветке tests-passed, поэтому меня немного беспокоит, что здесь это не работает…

Хорошо, у меня есть для вас немного больше информации по этому вопросу, замеченная на нашем сайте discourse.team, где я сообщил, что это работает.

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

Если я нажимаю на тему, которую я уже посещал ранее, фокус устанавливается правильно, и я получаю голосовой отклик.

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

Удивительно, что такое поведение так сильно различалось между Firefox и Chrome.

Спасибо за все усилия, приложенные к этому.

1 лайк

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

Это полезно знать, я думаю, у нас есть путь к доработке и исправлению этого. Если вы сможете поделиться точным порядком команд, которые вы используете, это тоже поможет.

В моём обычном браузере Chrome, если я перехожу к новой теме, которую я не читал, и нажимаю Tab, фокус оказывается на заголовке темы, что кажется мне разумным, но, вероятно, этого недостаточно для вашего случая использования.

Спасибо ещё раз за вашу постоянную обратную связь, очень ценим!

1 лайк

Это странно: с JAWS и Chrome при тестировании новой темы на Meta я заметил новое поведение JAWS. После нажатия Enter на заголовке темы появляется обычная информация о только что загруженной странице — стандартное поведение JAWS. То же самое происходит, когда я возвращаюсь к списку тем и снова нажимаю Enter на той же теме: фокус просто перемещается на последний прочитанный пост. Похоже, это как минимум решает две проблемы здесь. Я ещё не тестировал переход к последнему посту в списке тем, но предполагаю, что это тоже будет работать.
Однако, конечно, не всё идеально, хотя это может вообще не быть связано с предыдущим. Когда я использую кнопку «Назад», чтобы вернуться к списку тем, фокус теряется: меня не возвращают к той теме, которую я открывал и читал. Это может быть ошибкой JAWS/Chrome — мы уже сталкивались с подобным, но это также может быть проблемой на вашей стороне. Мне нужно будет проверить это с помощью NVDA.

1 лайк

Я только что попробовал с NVDA и Chrome, и здесь ничего не работает: я больше не могу просто нажать Enter на любом заголовке темы в таблице. Я уверен, что раньше это работало. Конечно, поскольку я пользователь JAWS, это меня не беспокоит, но для пользователей NVDA это совсем другая история.
Поскольку NVDA на самом деле не работала, я не могу протестировать проблему с фокусом при возврате от темы к списку тем.
Однако JAWS здесь надежен: фокус помещается в верхней части страницы.

1 лайк

Почти готово!

В новейшем Chrome на нашем сайте discourse.team при клике на ранее посещённую тему меня возвращает к тому месту, где я остановился, а NVDA корректно объявляет заголовок поста, на котором установлен фокус.

К сожалению, при переходе в новую тему фокус не перемещается на первый пост в теме. Аналогично, попытка переместить фокус на первый пост с помощью клавиши «h» не удаётся. Мне приходится вручную находить его, чтобы начать чтение.

Обратите внимание, что в новых постах в Firefox позиция, похоже, устанавливается корректно. Похоже, проблема возникает только в Chrome по какой-то причине.

При прочих равных условиях я рад, что позиция сохраняется в предыдущих темах, так как это была моя главная проблема. Однако я надеюсь, что мы получим правильное и последовательное поведение в обоих сценариях.

Спасибо!

4 лайка

Отлично это слышать.

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

Это должно работать. Я проведу некоторые тесты и посмотрю, сможем ли мы это исправить.

Спасибо за вашу обратную связь!

3 лайка

Хотел бы отметить ещё одну мелкую, но раздражающую проблему, которая беспокоит меня уже давно.

При создании новой темы выпадающий список для добавления тегов или категорий работает немного странно. Во-первых, для меня его метка — «Фильтр по». Не уверен, отображается ли это визуально, но мне потребовались буквально годы работы на Discourse, чтобы понять, что теги добавляются именно так. Использование слова «Фильтр» для меня ассоциируется скорее с чем-то вроде «фильтрации чего-то из воды», а не с добавлением нового элемента. Если эта метка отображается визуально, то делайте с этим фидбеком что угодно, но если она доступна только через ARIA, то, возможно, стоит внести некоторые корректировки.

Далее: при клике на список тегов я вижу элементы, похожие на переключатели (radio buttons). Если нажать на них пробел (согласно шаблону группы переключателей ARIA), это, похоже, запускает поиск. Да, я могу нажать Enter, но я привык использовать пробел для активации кнопок, так как мои большие пальцы находятся рядом.

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

Думаю, для этого взаимодействия лучше подошёл бы шаблон раскрывающегося списка (combobox) ARIA. В частности, редактируемый раскрывающийся список работает гораздо менее запутанно. Если я ввожу «А», я могу стрелкой вниз выбрать «Алабама». Элемент не представлен как переключатель, поэтому моя автоматическая реакция не заключается в нажатии пробела, но если я это делаю, пробел вставляется, как и ожидалось. Возможно, достаточно просто убрать отображение в виде переключателя, но, вероятно, стоит также сделать менее навязчивым вывод количества результатов.

Большое спасибо.

5 лайков

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

5 лайков

Круто, ещё один момент.

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

Думаю, это связано с поведением автодополнения? Интересно, можно ли отключить это поведение в случаях, когда есть только одно совпадение, или пока не нажата клавиша Enter или другая клавиша? Я понимаю логику автодополнения при первоначальном вводе и правках, но отлаживать, почему в некоторых случаях не удаётся переместить фокус, довольно сложно, и, похоже, причина именно в этом. Казалось бы, правильным решением здесь было бы выпадающее меню, вызываемое вручную при редактировании.

Большое спасибо.

2 лайка