Библиотека iziToast предоставляет удобный интерфейс для отображения уведомлений, однако для управления их состоянием и мониторинга активных уведомлений важно уметь получать информацию о текущих тостах.
Все уведомления, созданные через iziToast, могут быть
идентифицированы по id. При вызове
метода:
iziToast.show({
title: 'Пример',
message: 'Текст уведомления',
id: 'unique_id_1'
});
указывается уникальный идентификатор. Если id не задан,
библиотека автоматически генерирует внутренний идентификатор, но для
последующего получения информации лучше использовать явный
id.
IziToast не предоставляет прямого публичного API для получения списка
всех текущих уведомлений, но можно использовать внутренние структуры. В
частности, библиотека хранит уведомления в DOM-элементах с классом
.iziToast. Каждое уведомление добавляется в контейнеры
.iziToast-wrapper в зависимости от позиции
(topRight, bottomLeft и т.д.).
Пример обхода активных уведомлений:
const activeToasts = document.querySelectorAll('.iziToast');
activeToasts.forEach(toast => {
console.log('ID уведомления:', toast.getAttribute('data-iziToast-id'));
console.log('Сообщение:', toast.querySelector('.iziToast-message').innerText);
});
В этом коде:
data-iziToast-id — уникальный идентификатор
уведомления;.iziToast-message — элемент с текстом уведомления.Для контроля конкретного уведомления используется id.
Например, чтобы проверить наличие определённого уведомления:
function isToastActive(id) {
return !!document.querySelector(`.iziToast[data-iziToast-id="${id}"]`);
}
if (isToastActive('unique_id_1')) {
console.log('Уведомление активно');
}
Метод возвращает true, если уведомление с указанным
id присутствует в DOM, и false — если его
нет.
Каждое уведомление может содержать:
title — заголовок;message — текст сообщения;icon — иконка;timeout — время жизни уведомления.Доступ к этим данным возможен через соответствующие DOM-элементы:
const toastElement = document.querySelector('.iziToast[data-iziToast-id="unique_id_1"]');
const title = toastElement.querySelector('.iziToast-title')?.innerText;
const message = toastElement.querySelector('.iziToast-message')?.innerText;
const iconClass = toastElement.querySelector('.iziToast-icon')?.className;
console.log({ title, message, iconClass });
Использование операторов ?. предотвращает ошибки, если
некоторые элементы отсутствуют.
IziToast предоставляет возможность отслеживания состояния уведомления через события:
iziToast.show({
title: 'Событие',
message: 'Тест',
id: 'event_toast',
onOpening: function(instance, toast) {
console.log('Уведомление открывается', toast);
},
onClosing: function(instance, toast, closedBy) {
console.log('Уведомление закрывается', toast, 'Причина:', closedBy);
}
});
onOpening вызывается при начале появления
уведомления;onClosing вызывается при закрытии,
closedBy показывает причину (button,
timeout, click и др.).Для управления уведомлениями полезно:
id.onOpening и onClosing
для логирования или синхронизации с другими частями приложения.В DOM каждое уведомление имеет вид:
<div class="iziToast" data-iziToast-id="unique_id_1">
<div class="iziToast-icon"></div>
<div class="iziToast-body">
<div class="iziToast-title">Заголовок</div>
<div class="iziToast-message">Сообщение</div>
</div>
<div class="iziToast-close"></div>
</div>
Знание этой структуры позволяет точно получать все данные, управлять их отображением и контролировать активные уведомления через JavaScript.
Такой подход обеспечивает полный контроль над текущими тостами и позволяет интегрировать iziToast в более сложные системы уведомлений, где важна логика показа, закрытия и учета сообщений.