Я использую событие onbeforeunload, чтобы запретить пользователю покидать страницу до конца sh некоторые вещи, потому что я не могу изменить сообщение в предупреждении onBeforeUnload, я хочу отобразить свое собственное предупреждение, чтобы сообщить пользователю что нужно сделать, прежде чем покинуть страницу. Дело в том, что если я установлю событие следующим образом:
@HostListener('window:beforeunload', ['$event'])
beforeUnloadHandler($event) {
if (!this.documento) {
this._toastr.warning("Debe subir un documento adjunto a esta correspondencia.", "Correspondencia Incompleta");
$event.preventDefault();
$event.returnValue = "test";
return false;
}
}
, сначала будет показано предупреждение браузера, и я просто смогу увидеть свое предупреждение, когда нажимаю кнопку «не уходить» в предупреждении. Итак, я попробовал это:
@HostListener('window:beforeunload', ['$event'])
beforeUnloadHandler($event) {
if (this.documento) {
this._toastr.warning("Debe subir un documento adjunto a esta correspondencia.", "Correspondencia Incompleta");
setTimeout(function () {
$event.preventDefault();
$event.returnValue = "test";
return false;
}, 3000);
}
}
Но с этим время ожидания работает, но теперь предупреждение браузера не работает, поэтому, когда время ожидания заканчивается, страница просто обновляется / закрывается. Есть ли способ поставить тайм-аут в оповещение браузера, чтобы сначала показать мое оповещение / тостер? Я работаю в Angular 6.