2016-05-12 3 views
0

я добавил следующий фрагмент кода, чтобы сделать чтение с экрана читать предупредительное сообщение:роль = «тревога» работает только в первый раз

<aside aria-live="assertive" aria-atomic="true" role="alert" ng-show="login.hasWarning();" translate="{{message}}"></aside> 
 

 
<form> 
 
    <!--form content--> 
 
</form>

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

Заранее спасибо.

ответ

1

Вы снова нажимаете одно и то же сообщение об ошибке? Как и в случае нажатия «Ошибка 101» в первый раз, а затем повторного нажатия «Ошибка 101»?

Если да: JAWS/VoiceOver/NVDA только читает обновления в реальном времени. Если вы заменяете текст на идентичный текст, он не считается обновлением. Замените текст пустой строкой перед нажатием нового сообщения об ошибке. Обратите внимание, что JAWS может указывать «Пустое», в зависимости от настроек браузера и пользователя.

+0

HI Juli, спасибо за ваш ответ. –

+0

У вас есть идеи, почему все основные устройства чтения с экрана (JAWS/VoiceOver/NVDA) предпочитают это делать? И есть ли какая-нибудь работа вокруг, скажем, как добавление случайных пустых пространств в конце сообщения и т. Д., Чтобы читатели экрана снова читали его? –

+0

Потому что это спецификация WAI-ARIA. (https://www.w3.org/TR/wai-aria/states_and_properties#aria-live) SR читает изменения в живой области. Если ваше обновление не является изменением, SR не читает его. Добавление пустых пространств в начало и конец сообщения может работать с VoiceOver и, вероятно, не будет работать с JAWS. Если вам удобнее JAWS, возможно, что вместо «Ошибка 101» вместо «Ошибка 101» можно указать «пустая ошибка 101», запустив $ («[aria-live]»). Text (""); $ («[aria-live]»). текст («Ошибка 101»); будет, по крайней мере, прочитан. – Juli