Я упоминал об этом в начале моего ответа на ваш предыдущий вопрос относительно указания role="alert"
и aria-live="polite"
.
В вашем примере кода указана противоречивая информация. Использование role = "alert" дает вам неявное aria-live = "assertive", но вы также указываете aria-live = "polite". Я бы порекомендовал удалить role = "alert". Достаточно иметь aria-live = "вежливый".
Таким образом, результаты неизвестны, когда вы указываете два разных значения для aria-live. Предполагая, что aria-live = "assertive" имеет приоритет, spec для assertive говорит:
Пользовательские агенты или вспомогательные технологии МОГУТ выбрать для очистки изменений в очереди при появлении утверждающего изменения.
Таким образом, если у вас есть несколько подтверждающих сообщений, предыдущее подтверждающее сообщение может быть удалено следующим подтверждающим сообщением. (Это зависит от отдельной вспомогательной технологии. Например, JAWS может удалить предыдущее сообщение, а NVDA - нет.)
Если вы сделаете свое сообщение об ошибке aria-live = "вежливым", то вы могли бы услышать все сообщения. Это зависит от того, когда страница обновляется и когда обновляется буфер программы чтения с экрана. Если вы обновите сообщение в <error-component>
, а буфер программы чтения с экрана обновится, а затем снова обновите сообщение в <error-component>
, а буфер программы чтения с экрана обновится, то, когда во время взаимодействия пользователя произойдет пауза, появятся сообщения об ошибках в очереди. должен быть прочитан. Но, опять же, это может быть проблемой времени.
Что происходит визуально, когда у вас есть несколько сообщений об ошибках? Вы можете видеть все сообщения одновременно или кратко видите одно сообщение, а затем оно перезаписывается следующим?
Если вы создаете несколько визуальных <error-component>
элементов, чтобы вы могли видеть все сообщения одновременно И , вы делаете контейнер этих компонентов aria-live = "вежливым", тогда вам следует услышать все ошибки.