Библиотека Noty предоставляет гибкие возможности для отображения уведомлений в веб-приложениях, включая автоматическое управление временем их существования на странице. Одной из ключевых функций является автоматическое удаление старых уведомлений после определённого времени или при превышении заданного количества сообщений.
Каждое уведомление в Noty может иметь параметр
timeout, который определяет, через сколько
миллисекунд уведомление будет автоматически закрыто.
new Noty({
text: 'Данные успешно сохранены',
type: 'success',
timeout: 3000, // уведомление исчезнет через 3 секунды
layout: 'topRight',
theme: 'mint'
}).show();
timeout: false — уведомление не
исчезает автоматически и требует ручного закрытия.timeout: number — время в
миллисекундах, по истечении которого уведомление исчезнет.progressBar: true — визуальный
индикатор оставшегося времени жизни уведомления.Для предотвращения переполнения интерфейса большим количеством
уведомлений можно использовать метод queue
и ограничить их количество через глобальные параметры Noty:
Noty.overrideDefaults({
maxVisible: 3 // одновременно на экране будет максимум 3 уведомления
});
Если на экране появляется новое уведомление, а лимит достигнут, старое уведомление автоматически закрывается. Это особенно полезно для систем с частыми событиями или уведомлениями о событиях в реальном времени.
Noty позволяет привязать закрытие уведомления к определённому событию, например после завершения анимации или при выполнении сетевого запроса:
let n = new Noty({
text: 'Файл загружен',
type: 'info',
timeout: 5000,
progressBar: true,
callbacks: {
onClose: function() {
console.log('Уведомление закрыто');
}
}
}).show();
В объекте callbacks доступны следующие
события:
onShow — при отображении
уведомленияonClose — при его закрытииonClick — при клике по
уведомлениюafterClose — после полного завершения
анимации исчезновенияЭти события позволяют динамически управлять логикой приложения при автоматическом уничтожении уведомлений.
Для массового закрытия всех уведомлений можно использовать
статический метод Noty.closeAll():
Noty.closeAll();
Также можно указать тип уведомлений, которые нужно закрыть:
Noty.closeAll('success'); // закроет только уведомления с типом success
Это обеспечивает быстрый контроль над интерфейсом при возникновении критических ситуаций или при смене контекста приложения.
При работе с динамическими событиями, например при получении уведомлений через WebSocket или API, удобно создавать уведомления с автоматическим закрытием и прогресс-баром:
function notifyUser(message, type = 'alert') {
new Noty({
text: message,
type: type,
timeout: 4000,
layout: 'topRight',
progressBar: true,
killer: true // автоматически закрывает предыдущие уведомления перед показом нового
}).show();
}
killer: true — закрывает все старые
уведомления перед показом нового, предотвращая захламление
интерфейса.Noty поддерживает кастомные анимации для появления и исчезновения
уведомлений через объект animation:
new Noty({
text: 'Данные обновлены',
type: 'success',
timeout: 3000,
animation: {
open: 'animated bounceInRight',
close: 'animated bounceOutRight'
}
}).show();
Такой подход позволяет сделать процесс автоматического удаления более визуально привлекательным, не отвлекая пользователя.
Если необходимо управлять потоком уведомлений, можно использовать
очередь queue Noty:
let myQueue = new Noty.Queue({
maxVisible: 2
});
myQueue.add(new Noty({text: 'Сообщение 1', type: 'info', timeout: 2000}));
myQueue.add(new Noty({text: 'Сообщение 2', type: 'alert', timeout: 2000}));
myQueue.add(new Noty({text: 'Сообщение 3', type: 'success', timeout: 2000}));
Таким образом новые уведомления будут ожидать своей очереди, а старые
закрываться автоматически по таймеру или по достижении лимита
maxVisible.
Грамотное использование параметров
timeout,
killer,
maxVisible и
callbacks позволяет полностью
автоматизировать процесс удаления устаревших уведомлений, поддерживая
интерфейс чистым и удобным для пользователя.