Javascript直接confirm()函数替换

use*_*749 3 javascript confirm

我想替换Javascript confirm()函数以允许自定义按钮而不是是/取消.我尝试搜索,但所有解决方案都是事件驱动的,例如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
 }
Run Code Online (Sandbox Code Playgroud)

**

nic*_*ckf 6

像其他人所说,这是不可能的.confirm是一个阻塞函数 - 在用户解除对话框之前不再执行脚本 - 并且您无法使用其他Javascript方法进行模拟.

更好的解决方案是构造用于异步执行的代码.这几乎总是一个更好的主意 - 首先,它可以让你决定你的对话框应该是什么样子,有什么按钮等等; 第二,它不会阻止用户.他们可能拥有在另一个选项卡或页面上的其他位置仔细检查打开所需的重要信息.在confirm他们能够到达这些地方之前,他们必须回答你的问题.

这是代码可能看起来的代码片段.这里有很多空白位,但它可能会让你走上正轨:

if (result>2000) {
    displayConfirm("Are you sure this is right?", {
        "Yes": function () {
            // ... do stuff
        },
        "No": function () {
            // do.. nothing? up to you.
        }
    } 
}
Run Code Online (Sandbox Code Playgroud)

你会在这里看到定义了两个函数,但实际上都没有执行.该displayConfirm函数必须构建一个对话框(以任何方式),然后创建按钮,使用这些函数作为点击处理程序(或至少从点击处理程序调用它们).