我想替换Javascript Confirm()函数以允许自定义按钮,而不是Yes / Cancel.我尝试搜索,但是所有解决方案都是事件驱动的,例如jquery对话框(其中代码不等待响应,而是事件驱动的).有谁知道非事件驱动的解决方案.它必须在Safari和IE中都可以使用(因此没有vbscript).
这是系统许多部分的示例代码.这是旧的代码,在设计时并未考虑事件驱动的窗口.我试图避免重写.
**
// Wait for users response
if (result>2000) {
if (confirm("Are you sure this is right?")){
... do stuff
}
}
... continue with other stuff
... lots of other code.
if (confirm("Did you double check your numbers?")){
... do more stuff
} else {
... do something
}
**
解决方法:
就像其他人说的那样,这是不可能的.确认是一个阻止功能-在用户关闭对话框之前不会再执行任何脚本-并且您无法使用其他Javascript方法来模拟该脚本.
更好的解决方案是为异步执行构造代码.这几乎总是一个更好的主意-首先,它使您可以决定对话框的外观,有哪些按钮等等.其次,它不会阻止用户.他们可能需要仔细检查在另一个选项卡或页面上的其他位置打开的重要信息.确认之后,他们必须先回答您的问题,才能到达这些地方中的任何一个.
这是代码的摘要.这里有很多空白,但这可能使您走上正轨:
if (result>2000) {
displayConfirm("Are you sure this is right?", {
"Yes": function () {
// ... do stuff
},
"No": function () {
// do.. nothing? up to you.
}
}
}
您将在此处看到定义了两个函数,但实际上没有一个函数被执行. displayConfirm函数必须构造一个对话框(以任何方式),然后创建按钮,并将这些函数用作单击处理程序(或至少从单击处理程序调用它们).
标签:confirm,javascript
来源: https://codeday.me/bug/20191202/2085862.html