function show_alert(args) {
Swal.fire({
icon: args.icon,
title: args.title,
text: args.message,
html: args.html,
allowEscapeKey: args.allowEscapeKey ? args.allowEscapeKey : true,
allowOutsideClick: args.allowOutsideClick ? args.allowOutsideClick : true,
confirmButtonText: args.confirmButtonText ? args.confirmButtonText : 'Tamam',
confirmButtonColor: args.confirmButtonColor ? args.confirmButtonColor : '#3085d6',
cancelButtonText: args.cancelButtonText ? args.cancelButtonText : 'İptal',
cancelButtonColor: args.cancelButtonColor ? args.cancelButtonColor : '#d33',
showCancelButton: args.showCancelButton === undefined ? false : args.showCancelButton,
showCloseButton: args.showCloseButton === undefined ? false : args.showCloseButton,
showConfirmButton: args.showConfirmButton === undefined ? true : args.showConfirmButton,
didOpen: args.didOpen ? args.didOpen : null,
reverseButtons: true,
}).then((result) => {
if (result['isConfirmed']) {
args.callback ? args.callback_args ? args.callback(args.callback_args) : args.callback() : null;
} else if (result['isDismissed'] && args['isDismissed']) {
event.preventDefault();
args.isDismissed ? args.isDismissed() : null;
}
});
}
上面的代码块是一个通用的警报显示函数,我可以根据我在“args”中给予出的参数来显示警报。
我编写了以下代码块,以便在用户单击按钮时显示加载警报:
show_alert({
'title': 'Please wait',
'html': 'Loading audio file ...',
'allowEscapeKey': false,
'allowOutsideClick': false,
'showConfirmButton': false,
'showCancelButton': false,
'showCloseButton': false,
'didOpen': () => {Swal.showLoading();},
'isDismissed': () => {console.log('dismissed');}
});
但是,当用户单击页面上警报以外的任何位置时,警报将关闭。
有没有可能通过使用event.preventDefault()
这样的函数来阻止这种情况?如果您能提供帮助,我将不胜感激。
在“else if”块中,我试图捕获事件并阻止单击事件,就像“allowOutsideClick”属性一样,但我做不到。
1条答案
按热度按时间fivyi3re1#
三元组总是将
allowOutsideClick
设置为真实值:如果
allowOutsideClick
错误,则需要将其更改为false
:由于SweetAlert的选项接受truthy/falsy值,因此可以简化为:
我建议您看看其他选项,并提供类似的优化。例如
allowEscapeKey
选项(似乎也有类似的问题)。此外,任何地方,你有模式:
可以简化为
因为它们的意思是一样的。
顺便说一句,你在
.then()
中误用了条件运算符? :
。当你需要使用表达式的返回值时,你应该使用它们。当你不使用计算值,而只是执行副作用,比如调用一个函数时,你最好使用if语句。我还认为,仅当
args.callback_args
为真时才调用args.callback(args.callback_args)
可能不是您想要做的,因为这会阻止您将callback_args
指定为虚假值,例如false
、0
、""
等。您最好总是调用args.callback(args.callback_args)