IE role = "alert" не читается при загрузке страницы - PullRequest
0 голосов
/ 12 марта 2019

Я добавляю поддержку специальных возможностей для своего проекта, и недавно выяснил, что JAW не считывает элемент с role = "alert", если элемент загружен страницей с использованием IE11.

У меня есть страницакоторый отправляет входные данные на сервер и получает ответ с ошибкой, если данные недоступны.Для диапазона ошибок назначено role = "alert".Ошибка читается сразу после загрузки страницы при использовании Chrome, но IE, кажется, игнорирует ошибку.

Я не могу установить фокус на диапазон ошибок, потому что фокус должен быть установлен на поле, вызванное ошибкой.

Я использую JAWs 2019 с IE11.

В качестве примера тестирования просто откройте HTML-документ с помощью IE11 с содержимым:

<h1>title</h1>
<span role=alert>this is an alert</span>

В моем тесте диапазонне считывается сразу.

Обновление: JAWs 2019 отлично работает с другими элементами оповещения в IE11 в моем тестировании.Только когда у меня есть элемент оповещения, который загружается вместе со страницей, я вижу проблему.JAW должны описывать элемент alert после загрузки элемента.Chrome работает как положено.

1 Ответ

0 голосов
/ 14 марта 2019

Не похоже, что вы используете aria-live правильно.Он не должен читаться при загрузке страницы .Если есть некоторые комбинации браузера и программы чтения с экрана, где означает , то эта комбинация не соответствует спецификациям html и aria.

И просто уточнить, если вы используете role="alert",это дает вам неявное aria-live="assertive".Таким образом, этот вопрос действительно о aria-live.

aria-live область должна только автоматически считываться программой чтения с экрана, если вы измените содержимое этой области,Если вы вставите текст в свой регион или добавите новые элементы DOM в этот регион, они будут прочитаны после внесения изменений.Вы можете контролировать, какие типы изменений считываются с aria-relevant.Изменения текста и дополнения DOM по умолчанию.Вы также можете контролировать объем информации, читаемой в текущем регионе, с помощью aria-atomic.

@ Рой говорит в разделе комментариев, что может быть повторен вопрос.Это не тот же вопрос, потому что другой вопрос правильно использует aria-live.

Что вы действительно хотите сделать, так это создать на своей странице существующий регион, например

<div role="alert" id="someID"></div>

итогда <span>, который возвращается вам с сервера, не нужен role="alert".Он может просто вернуть <span> с содержащимся в нем сообщением об ошибке

<span>this is an alert</span>

, а затем вам нужно вставить это сообщение в <div>

<div role="alert" id="someID">
  <span>this is an alert</span>
</div>

Сейчас вы услышите "это предупреждение", прочитанное программой чтения с экрана.

...