Библиотека Toastify предоставляет удобный механизм для создания всплывающих уведомлений в веб-приложениях. Помимо базового отображения сообщений, одним из мощных инструментов является возможность отслеживания момента появления уведомления, что позволяет выполнять дополнительные действия в момент его рендера.
В стандартной конфигурации Toastify поддерживает два ключевых колбэка:
onClick — вызывается при клике на уведомление.callback (или onShow в некоторых версиях)
— вызывается в момент отображения уведомления на экране.Пример базового уведомления с отслеживанием появления:
Toastify({
text: "Уведомление появилось",
duration: 3000,
gravity: "top",
position: "right",
onClick: function() {
console.log("Пользователь кликнул на уведомление");
},
callback: function() {
console.log("Уведомление полностью показано на экране");
}
}).showToast();
Здесь callback срабатывает сразу после
того, как элемент был вставлен в DOM и видим пользователю.
callback и onClickcallback (или onShow) выполняется
один раз в момент появления уведомления, независимо от
действий пользователя.onClick зависит исключительно от взаимодействия с
пользователем и может не сработать, если уведомление исчезло до
клика.Использование callback позволяет запускать логику,
которая должна синхронизироваться с визуальным отображением,
например:
Часто возникает необходимость выполнять асинхронные операции сразу после рендера уведомления. Например, загрузка дополнительных данных или динамическое изменение стиля. Это достигается с помощью колбэка:
Toastify({
text: "Данные обновляются...",
duration: 4000,
callback: async function() {
const response = await fetch("/api/notifications");
const data = await response.json();
console.log("Полученные данные после показа уведомления:", data);
}
}).showToast();
В этом случае уведомление появляется мгновенно, а асинхронная операция запускается после того, как элемент уже виден пользователю, что исключает задержку отображения.
Toastify позволяет изменять CSS-анимации уведомлений. Чтобы отслеживать момент появления в сочетании с анимацией, можно использовать колбэк совместно с классами:
Toastify({
text: "Анимированное уведомление",
duration: 5000,
gravity: "bottom",
position: "left",
className: "custom-toast",
callback: function() {
const toastElement = document.querySelector(".custom-toast");
toastElement.style.border = "2px solid #4CAF50";
toastElement.classList.add("highlight");
}
}).showToast();
Здесь уведомление получает визуальные изменения только после того, как оно появилось, что предотвращает любые конфликты с начальной анимацией.
Если требуется более детальный контроль, можно использовать MutationObserver для отслеживания вставки элемента уведомления в DOM:
const observer = new MutationObserver((mutationsList) => {
for (const mutation of mutationsList) {
if (mutation.addedNodes.length > 0) {
mutation.addedNodes.forEach(node => {
if (node.classList && node.classList.contains("toastify")) {
console.log("Уведомление добавлено в DOM:", node.textContent);
}
});
}
}
});
observer.observe(document.body, { childList: true, subtree: true });
Toastify({ text: "Отслеживаем DOM", duration: 3000 }).showToast();
Этот метод особенно полезен при динамическом создании уведомлений в больших приложениях, где необходимо реагировать на появление без изменения самой конфигурации Toastify.
callback или onShow
для логики, зависящей от визуального отображения уведомления.С помощью этих методов отслеживание появления уведомлений становится гибким и надежным инструментом, позволяющим синхронизировать интерфейс, аналитику и пользовательские взаимодействия с моментом отображения сообщений.