PreventDefault SweetAlert2
Я получил эту функцию, которая переопределяет мои родные оповещения js:
function alert(message, title = 'Test', type = 'info')
{
// event.preventDefault();
if(typeof(swal) != 'undefined') {
swal({
html: message,
title: title,
type: type,
width: '24rem',
}).then((result) => {
return result.value;
});
}
else {
alert(message);
}
}
В конце моих функций PHP у меня появляется предупреждение ("успех"), а затем я перенаправляю на другую страницу. С собственным предупреждением JS, я жду, чтобы нажать кнопку OK, чтобы продолжить. Теперь с этой функцией swal, она показывает предупреждение и мгновенно перенаправляет. Есть ли способ избежать такого поведения и действовать как собственное предупреждение, не меняя сигнатуру функции?
1 ответ
Разница в том, что alert()
модально. Это означает, что он блокирует все остальные входы и выходы до тех пор, пока не будет отклонен. Подсластитель нет.
Вы можете заставить его вести себя аналогичным образом, используя функцию обратного вызова, которую вы выполняете при нажатии кнопки ОК в Sweetalert. Вы можете сделать это, передав функцию alert()
затем вызывая его в then()
блок, вот так:
function alert(message, title = 'Test', type = 'info', callback) {
if (typeof(swal) != 'undefined') {
swal({
html: message,
title: title,
type: type,
width: '24rem',
}).then(() => {
callback && callback();
});
} else {
alert(message);
callback && callback();
}
}
// example usage:
alert('foo bar', 'title', 'info', function() {
window.location.assign('somewhere_else.php');
});