Библиотека Noty предоставляет мощный механизм для создания уведомлений с гибкой настройкой времени их отображения. Одним из ключевых аспектов управления уведомлениями является задержка (timeout) — время, в течение которого уведомление остаётся видимым перед автоматическим закрытием.
timeoutСвойство timeout определяет длительность показа
уведомления в миллисекундах. Оно может быть установлено как в момент
создания экземпляра уведомления, так и через глобальные настройки.
Пример создания уведомления с задержкой 3 секунды:
new Noty({
text: 'Успешная операция',
type: 'success',
timeout: 3000 // уведомление закроется через 3000 мс
}).show();
Если timeout равен false, уведомление
останется на экране до тех пор, пока его явно не закроют с помощью
метода .close().
new Noty({
text: 'Важное сообщение',
type: 'alert',
timeout: false
}).show();
Для однотипных уведомлений часто удобно задать глобальное значение
timeout, чтобы не повторять его в каждом вызове. Это
делается через объект конфигурации
Noty.overrideDefaults.
Noty.overrideDefaults({
timeout: 5000
});
new Noty({
text: 'Сообщение с глобальной задержкой',
type: 'information'
}).show();
После этого все уведомления будут закрываться через 5 секунд, если в
конкретном экземпляре не указан другой timeout.
Noty позволяет изменять поведение задержки уже после показа
уведомления. Метод setTimeout() динамически меняет время до
автоматического закрытия.
let n = new Noty({
text: 'Сообщение будет закрыто позже',
timeout: 2000
}).show();
// Изменяем задержку на 5 секунд
n.setTimeout(5000);
Метод stop() приостанавливает обратный отсчет таймера
закрытия, что полезно при взаимодействии пользователя с уведомлением
(например, при наведении курсора).
let n = new Noty({
text: 'Наведи курсор, чтобы задержать уведомление',
timeout: 4000
}).show();
n.on('onMouseenter', function() {
n.stop(); // пауза таймера
});
n.on('onMouseleave', function() {
n.resume(); // продолжение таймера
});
Задержка уведомлений может комбинироваться с асинхронными процессами. Например, закрытие уведомления после завершения AJAX-запроса:
let n = new Noty({
text: 'Отправка данных...',
type: 'information',
timeout: false
}).show();
fetch('/api/save', { method: 'POST', body: JSON.stringify({data: 123}) })
.then(response => response.json())
.then(data => {
n.setText('Данные успешно сохранены');
n.setType('success');
n.setTimeout(3000); // уведомление закроется через 3 секунды
})
.catch(() => {
n.setText('Ошибка при сохранении');
n.setType('error');
n.setTimeout(5000);
});
timeout: false, чтобы пользователь успел ознакомиться с
текстом.timeout: false), чтобы дать время пользователю принять
решение.timeoutNoty.overrideDefaults упрощает поддержание единообразия
интерфейса.stop() и resume() позволяют
управлять таймером в реальном времени при взаимодействии пользователя с
уведомлением.Эти инструменты делают систему уведомлений гибкой и позволяют точно контролировать поведение сообщений на странице.