У меня есть одностраничное веб-приложение (SPA), созданное с использованием AngularJS с поддержкой преобразования текста в речь (TTS). При начальной загрузке приложения TTS работает должным образом. Элемент DOM выделяется, и воспроизводится звук, описывающий элемент DOM.
Проблема в том, что как только новое представление загружается через ng-view, TTS больше не работает, а выделение из предыдущих элементов ng-view остается на экране.
Я подозреваю, что это из-за того, как SPA обрабатывает навигацию, это делается путем частичной перезагрузки (замена ng-view).
Есть идеи, как заставить ARIA и TTS хорошо играть в СПА?
Пример представления 1:
<a href = "some_link/videos">videos</a>
<a href = "some_link/ratings">ratings</a>
Пример представления 2:
<a href = "some_link/subscriptions">subscriptions</a>
<a href = "some_link/playlist">playlist<
Загрузка представления 1 побудит TTS ответить следующим образом:
// videos , link
// ratings, link
Загрузка представления 2 должна побудить TTS ответить следующим образом:
// subscriptions, link
// playlist, link
Модуль ngAria обеспечивает поддержку общих атрибутов ARIA, которые передают информацию о состоянии или семантическую информацию о приложении для пользователей вспомогательных технологий, таких как программы чтения с экрана. Для получения дополнительной информации см. Справочник по API AngularJS ngAria.
@georgeawg Конечно. Я добавил очень простой html-код, я проверю ссылку angular aria, которую вы предоставили.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если вы обновляете DOM новым текстом, обратите внимание на атрибут aria-live.
https://www.w3.org/TR/wai-aria/#aria-live
Например, если у вас есть
<a href = "some_link/videos">videos</a>
и вы используете JS для замены "видео" на "подписки", тогда все, что вам нужно, это aria-live = "polite" по ссылке:
<a href = "some_link/videos" aria-live = "polite">videos</a>
Теперь, если вы измените текст, программа чтения с экрана прочитает новый текст.
Задавая вопрос о проблеме, вызванной вашим кодом, вы получите гораздо лучшие ответы, если предоставите код, который люди могут использовать для воспроизведения проблемы. См. Как создать минимальный, полный и проверяемый пример.