<NuxtAnnouncer>
Компонент <NuxtAnnouncer> добавляет скрытый элемент для озвучивания динамических изменений контента программам чтения с экрана.
Компонент доступен в Nuxt v3.17+.
Использование
Добавьте <NuxtAnnouncer/> в app.vue или app/layouts/, чтобы программы чтения с экрана могли озвучивать динамические изменения контента. Удобно для валидации форм, уведомлений, состояний загрузки и других обновлений на странице.
app/app.vue
<template>
<NuxtAnnouncer />
<NuxtRouteAnnouncer />
<NuxtLayout>
<NuxtPage />
</NuxtLayout>
</template>
Затем используйте композабл useAnnouncer в любом месте приложения, чтобы озвучивать сообщения:
app/pages/contact.vue
<script setup lang="ts">
const { polite, assertive } = useAnnouncer()
async function submitForm () {
try {
await $fetch('/api/contact', { method: 'POST', body: formData })
polite('Сообщение успешно отправлено')
} catch (error) {
assertive('Ошибка: не удалось отправить сообщение')
}
}
</script>
Слоты
Через слот по умолчанию можно передать свой HTML или компоненты.
<template>
<NuxtAnnouncer>
<template #default="{ message }">
<p>{{ message }}</p>
</template>
</NuxtAnnouncer>
</template>
Пропсы
atomic: управляет тем, озвучивать ли только изменения или весь контент.true— полное озвучивание при обновлении,false— только изменения. (по умолчаниюtrue)politeness: срочность озвучивания:off(отключить),polite(дождаться паузы),assertive(озвучить сразу). (по умолчаниюpolite)
Отличия от <NuxtRouteAnnouncer>
| Аспект | <NuxtRouteAnnouncer> | <NuxtAnnouncer> |
|---|---|---|
| Назначение | Озвучивает смену маршрута/страницы | Озвучивает любой динамический контент |
| Триггер | Автоматически при навигации | Вручную через polite()/assertive() |
| Источник сообщения | <title> страницы | Задаётся разработчиком |
| atomic по умолчанию | false | true |
Компонент опционален.
Для полной кастомизации можно реализовать свой на основе исходного кода.
Для полной кастомизации можно реализовать свой на основе исходного кода.
Доступ к экземпляру озвучивания — через композабл
useAnnouncer, с помощью которого можно задавать произвольные сообщения.