TL;DR: для стандартных элементов управления HTML и стандартных шаблонов ARIA (виджетов) вам не нужно добавлять инструкции для программ чтения с экрана о том, как их использовать и что они из себя представляют.
Когда средство чтения с экрана встречает на странице элемент, который предлагает взаимодействие, выходящее за рамки чтения, оно обычно предоставляет пользователям инструкции, как его использовать или взаимодействовать с ним. По мере того, как пользователи знакомятся с инструментами, они могут пропустить некоторые из этих инструкций или вообще отключить их.
Если в дополнение к этим значениям по умолчанию для чтения с экрана вы добавите инструкции, они могут конфликтовать, быть избыточными, не соответствовать форм-фактору и будут многословными. Если вы используете aria-label , они не будут переводиться (за исключением некоторых пользователей Chrome).
Это также распространяется на сообщение пользователям, что такое элемент управления, и, в некоторых случаях, на сообщение пользователю его состояния. Флажок с отмеченным сообщает пользователю, что он отмечен. A сообщает пользователю, что она нажата.
Примеры, которые я видел, сильно упрощенные:
Когда вы используете нативный HTML по назначению, программа чтения с экрана даст соответствующие инструкции. Когда вы используете шаблоны ARIA (см. роли виджетов) в соответствии с определением (без добавления собственных настроек), программа чтения с экрана выдаст соответствующие инструкции.
Точно так же избегайте называть конкретный шаблон. Различные пары браузера и средства чтения с экрана могут вызывать один и тот же элемент управления по-разному. Например, ни один пользователь не знает, что такое поле со списком (как и половина разработчиков, с которыми я разговаривал, что интересно), поэтому, вероятно, не используйте это слово с пользователями.
Чтобы было проще понять, насколько это может быть запутанно:
Вы говорите прокрутка, программа чтения с экрана говорит: "пролистнуть" ,
Вы говорите кнопка сортировки, программа чтения с экрана говорит: кнопка сортировки
Вы говорите нажмите Enter, пользователь находится на сенсорном дисплее,
Вы говорите открыть поле со списком, пользователь — человек.
Все это, конечно, исчезнет, как только вы начнете создавать пользовательские шаблоны, изменять существующие шаблоны или создавать собственные пользовательские элементы. Тогда вы должны не только указать все, но и потенциально переопределить значения по умолчанию.
Очень здорово, что стандартный HTML дает вам бесплатно.
Примеры кода
Я собрал страницу с некоторыми из наиболее распространенных шаблонов, которые, как я вижу, превратились в многословную тарабарщину, но я исключил эту тарабарщину. Если у вас есть программа чтения с экрана, поэкспериментируйте с ней самостоятельно. Подсказка: у вас есть программа для чтения с экрана; один из них встроен в устройство, которое вы сейчас используете.
После этого у меня есть видеоролики для некоторых комбинаций программ чтения с экрана и браузера, демонстрирующие, как объявляется каждая из них.
Видео
Используя приведенные выше примеры шаблонов, я записал некоторые основные взаимодействия в семи комбинациях программ чтения с экрана и браузера. Они предназначены для демонстрации того, как каждый объявляется по умолчанию. Я не просто нажимаю клавишу Tab; например, в таблицах я использую команды навигации по таблицам.
Если вы обнаружите, что на странице-примере вы получаете разные объявления, это может быть связано с настройками детализации (я оставил настройки по умолчанию), другой версией программы чтения с экрана, другой версией браузера или, возможно, подключаемыми модулями браузера, которые управлять DOM.
Вы можете увидеть в видео еще один раздел, который я не просматриваю и которого нет в приведенном выше образце. Я приберегу это для следующего поста после дополнительного тестирования.
К сожалению, ваш браузер не поддерживает встроенные видео, но не волнуйтесь, вы можете скачать их. VoiceOver с Safari на macOS. Это самый подробный из примеров. Извините, ваш браузер не поддерживает встроенное видео, но не волнуйтесь, вы можете его скачать. JAWS 2018 с Internet Explorer 11. IE11 не поддерживает / . Поддержка aria-controls , где на вкладках объявляется клавиша JAWS + Alt + M, была исключена из значений по умолчанию в JAWS 2019. К сожалению, ваш браузер не поддерживает встроенные видео, но не волнуйтесь, вы можете скачать его. . JAWS 2018 с Chrome 77. Поддержка aria-controls , где на вкладках объявляется клавиша JAWS + Alt + M, была исключена из значений по умолчанию в JAWS 2019. К сожалению, ваш браузер не поддерживает встроенные видео, но не волнуйтесь, вы можете скачать его. JAWS 2018 с Firefox 70. Поддержка aria-controls , где на вкладках объявляется клавиша JAWS + Alt + M, была исключена из значений по умолчанию в JAWS 2019. К сожалению, ваш браузер не поддерживает встроенные видео, но не волнуйтесь, вы можете скачать его. NVDA 2019.2 с Firefox 70. К сожалению, ваш браузер не поддерживает встроенное видео, но не волнуйтесь, вы можете скачать его. TalkBack с Chrome на Android 9. Здесь я сжульничал со столами и использовал исследование касанием просто для того, чтобы объявления выглядели так же, как в других примерах. TalkBack не предлагает специальных вариантов навигации по таблице. К сожалению, ваш браузер не поддерживает встроенное видео, но не волнуйтесь, вы можете его скачать. VoiceOver с Safari на iOS. Да, я должен был повернуть его в сторону.И да, VoiceOver придумывает цифры при чтении.
Обновление: 2 марта 2021 г.
Расс Макс создал ресурс, подробно описывающий, как элементы формы объявляются средствами чтения с экрана: тестовые примеры HTML. Существует Git-репозиторий, если вы хотите зарегистрировать или открыть проблему.
Он предоставляет простые текстовые объявления о различных элементах управления с помощью VoiceOver, NVDA и JAWS, версии каждого из которых перечислены на первой странице. У него также есть несколько дополнительных тестов для доступных имен и обязательных полей.
Для читателей из США даты отображаются в формате день/месяц/год. Итак, если вы посмотрите сегодня, 03 01/2021 не 3 января, а 1 марта.
Другие сообщения
11 комментариев
Ответить
Как бы вы отнеслись к сетке карточек (контейнеру с ролью = «сетка»)? будет ли добавление инструкций по навигации с помощью клавиатуры («используйте стрелки для навигации по картам») в качестве описания, а не в качестве метки, в соответствии с приведенным выше аргументом?
В ответ Нил. Ответить
Нил, в этой модели потребуются видимые инструкции в виде простого текста, поскольку она влияет на всех пользователей. Однако обратите внимание, что программы чтения с экрана перехватывают клавиши со стрелками для навигации с помощью виртуального курсора, поэтому вы можете обнаружить, что ваш шаблон в любом случае не работает для пользователей программ чтения с экрана.
Кроме того, на данный момент это единственно допустимое использование. случай, который я обнаружил для роли сетки, заключается в создании электронной таблицы (например, Microsoft Excel или Google Sheets), и они также используют роль приложения для предка, что я бы не рекомендовал для карточного интерфейса .
Ответ Нилу Осману. Ответ
Вы описываете содержание типичной карточки. Я по-прежнему предполагаю, что вы имеете в виду role="grid" в контейнере, а не display: grid .
Это не соответствует типичному использованию роли сетки. Если вы пытаетесь сообщить порядок презентации, может быть больший риск, поскольку порядок DOM должен быть порядком презентации для пользователей клавиатуры и программ чтения с экрана.
Помните, что пользователь программы чтения с экрана может перемещаться по содержимому. изначально с помощью Tab для перемещения по интерактивным элементам управления, клавиши h для перемещения по заголовкам и клавиш со стрелками для перемещения по содержимому.
1. То, что вы предлагаете, затронет любого, кто использует клавиатуру. Отдельно не полагайтесь на всплывающую подсказку или другой дисплей, предназначенный только для фокусировки, так как это исключает пользователей с сенсорным экраном и голосом.
2. Нет и нет. Вы бы создали слишком многословный элемент управления (для браузеров, которые поддерживают aria-labeledby на неинтерактивных элементах), а семантика сетки сама по себе не добавляет поддержку клавиатуры; вам все равно придется писать сценарий.
Я не думаю, что роль диалога является здесь хорошим аналогом, так как она также не указывает порядок представления.
Это немного сложно обсуждать в комментариях, поэтому, если у вас есть образец, напишите мне по электронной почте.
Ответ
Что вы думаете о подсказках для полей поиска для элементов управления автозаполнением и автозаполнением; т. е. что WAI-ARIA Authoring Practices называет виджетами «Combo Box»? Это похоже на примеры, когда подсказки почти всегда необходимы.
В ответ на Питер Вейл. Ответ
JAWS уже дает инструкции для этого, если вы следуете шаблонам разработки ARIA. Я был бы рад, если бы другие программы для чтения с экрана делали то же самое.
Ответ
Вы говорите, что откройте поле со списком, пользователь — человек.
В ответ Джеймс. Ответ
Очевидно, смайлики не работают в ваших комментариях. Это должна была быть цитата, сопровождаемая смеющимися смайликами. :)
В ответ Джеймс. Ответить
(Я проверяю, может ли комментирование WordPress справиться с ними — и нет, не может)
Ответ
На самом деле не понял намека на «встроенную программу чтения с экрана»... где она должна быть расположена? Или вы намеренно игнорируете тот факт, что на настольной платформе есть нечто большее, чем просто Windoze и Mac OS Argh?
cu, w0lf.
В ответ на fwolf. Ответ
Мое заявление Подсказка: у вас есть программа для чтения с экрана; один из них встроен в устройство, которое вы сейчас используете. является широким, потому что основная часть моего трафика приходится на Windows, а затем на macOS.
В Windows есть экранный диктор, в macOS — VoiceOver, в GNOME — Orca, в iOS — VoiceOver, в Android — TalkBack.
Если у вас есть ОС за пределами этой коллекции, затем проверьте свою документацию. Если у вас есть одна из перечисленных мной ОС, посмотрите мой старый ответ на Stack Overflow, в котором есть несколько ссылок.
Предварительная версия Android 12 Developer Preview, по-видимому, не за горами, и мы узнали, что телефоны Pixel могут получить новую функцию автоповорота на основе лица.
Сегодня на телефонах Pixel, а также на устройствах Android в целом вы можете менять ориентацию экрана в соответствии с ориентацией вашего устройства. Например, вы можете просматривать YouTube в портретном режиме, а затем поворачивать устройство в одну или другую сторону, чтобы развернуть видео.
Однако в этом опыте есть интересная особенность, или, возможно, вы можете думать о нем как о несоответствии между тем, что ожидают телефоны, и тем, как действуют люди. Слишком многие из нас имеют привычку пользоваться телефоном в постели, несмотря на усилия Google в области цифрового благополучия. И если вы сделаете это, лежа на боку, и ваша голова, и и ваш телефон будут повернуты в сторону.
С сегодняшним автоповоротом ваш телефон перейдет в альбомный режим, хотя вы хотели бы, чтобы он оставался в портретном режиме для удобства чтения. С Android Pie телефоны получили удобную кнопку для поворота дисплея, которая появляется, когда телефон повернут в сторону и автоповорот отключен. Те, кто использует свои телефоны, лежа на боку, скорее всего, отключат автоповорот и просто используют эту кнопку, когда им нужно повернуть экран.
Согласно информации, просмотренной 9to5Google, в Android 12 появится дополнительная версия автоматического поворота на основе лица для телефонов Pixel. По сути, ваш телефон будет использовать фронтальную камеру, чтобы проверять, смотрит ли кто-нибудь на экран, и если да, то в какую сторону повернута их голова.
Скорее всего, за этим стоит упрощенная версия функций распознавания формы лица таких приложений, как Snapchat и Google Duo. По очевидным причинам конфиденциальности эта проверка с помощью камеры будет выполняться исключительно на вашем устройстве, и ваша фотография никуда не будет сохраняться или отправляться.
Возможно, эта версия автоповорота на основе лица может быть запущена как более широкая функция Android 12, но пока мы считаем, что она будет предназначена исключительно для телефонов Pixel, по крайней мере, в краткосрочной перспективе. В качестве альтернативы, как это уже случалось с функциями, замеченными в более новых версиях Android, автоповорот на основе лица может появиться как часть Pixel Feature Drop.
Дилан Руссель участвовал в написании этой статьи
Подробнее об Android 12:
FTC: мы используем автоматические партнерские ссылки, приносящие доход. Подробнее.