Фокус-менеджмент — важный аспект пользовательского интерфейса, особенно при работе с всплывающими уведомлениями. Некорректное поведение фокуса может привести к ухудшению доступности, потере контекста ввода и раздражению пользователя. Библиотека iziToast предоставляет инструменты, позволяющие контролировать взаимодействие уведомлений с текущим фокусом на странице.
По умолчанию уведомления iziToast:
Это поведение делает уведомления ненавязчивыми, но требует дополнительной настройки в случаях, когда взаимодействие с уведомлением обязательно.
В ситуациях, когда уведомление требует немедленного внимания (например, подтверждение действия или ошибка формы), необходимо явно управлять фокусом.
Пример с кнопками внутри уведомления:
iziToast.show({
title: 'Ошибка',
message: 'Необходимо подтвердить действие',
buttons: [
['<button>ОК</button>', function (instance, toast) {
instance.hide({ transitionOut: 'fadeOut' }, toast);
}, true] // третий параметр — автофокус
]
});
true у кнопки означает
автоматическую установку фокусаДля более тонкого контроля можно использовать атрибуты
tabindex внутри HTML-контента уведомления:
iziToast.show({
message: '<input type="text" tabindex="1" placeholder="Введите значение">'
});
Иногда требуется ограничить доступ к остальной части интерфейса до
закрытия уведомления. Для этого используется параметр
overlay.
iziToast.show({
message: 'Подтвердите действие',
overlay: true,
overlayClose: false
});
После закрытия уведомления важно вернуть фокус туда, где пользователь находился ранее.
Пример ручного восстановления:
const activeElement = document.activeElement;
iziToast.show({
message: 'Данные сохранены',
onClosing: function () {
if (activeElement) {
activeElement.focus();
}
}
});
Для полноценного фокус-менеджмента необходимо учитывать клавиатурные действия:
iziToast.show({
message: 'Нажмите Esc для закрытия',
onOpening: function (instance, toast) {
document.addEventListener('keydown', function handler(e) {
if (e.key === 'Escape') {
instance.hide({}, toast);
document.removeEventListener('keydown', handler);
}
});
}
});
Escape — стандарт для закрытия модальных
элементовПри наличии нескольких уведомлений:
iziToast не управляет автоматически порядком фокуса
приоритет следует задавать вручную
рекомендуется:
Корректный фокус напрямую влияет на доступность интерфейса:
role="alert" или aria-live
для уведомленийПример:
iziToast.show({
message: 'Сообщение отправлено',
ariaLive: 'polite'
});
Эффективный фокус-менеджмент в iziToast строится на принципах:
Грамотная настройка фокуса превращает уведомления из простого визуального элемента в полноценную часть интерактивного интерфейса.