gpt4 book ai didi

Javascript 直接 confirm() 函数替换

转载 作者:行者123 更新时间:2023-11-29 10:52:11 28 4
gpt4 key购买 nike

我想替换 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
}

**

最佳答案

正如其他人所说,这是不可能的。 confirm 是一个阻塞函数 - 在用户关闭对话框之前不会执行更多脚本 - 并且您无法使用其他 Javascript 方法模拟它。

更好的解决方案是为异步执行构建代码。这几乎总是一个更好的主意——首先,它可以让您决定对话框的外观、有哪些按钮等;其次,它不会阻止用户。他们可能拥有需要在另一个选项卡或页面其他位置仔细检查打开的重要信息。通过 confirm,他们必须先回答您的问题,然后才能到达这些地方中的任何一个。

下面是一段代码可能的样子。这里有很多空白位,但它可能会让您走上正确的轨道:

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

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

关于Javascript 直接 confirm() 函数替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8128010/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com