【发布时间】:2013-11-14 12:32:02
【问题描述】:
我有一个名为showModalConfirmDialog 的函数,它创建一个自定义的javascript 对话框,带有两个按钮是/否,并使背景变暗。现在在我的函数中,我想像这样调用该函数:
var outcome = showModalConfirmDialog('Are you sure?');
我想根据点击的按钮做出反应;
if(outcome == true){
// do something
} else {
// do something else
}
按钮返回真/假。 Javascript代码:
button1.onclick = function(evt){
return true;
};
button2.onclick = function(evt){
return false;
};
我不知道我错过了什么,任何帮助将不胜感激。谢谢
【问题讨论】:
-
有什么问题?不显示吗?
-
它确实显示,但我希望它像 javascript 确认函数一样做出反应。我会详细解释;假设我在这个函数中有一个名为
save();的函数我正在调用上面的代码var outcome = showModalConfirmDialog('Are you sure?');并且取决于outcome我正在做一些其他的事情,问题是保存函数没有等待用户的响应/click,返回未定义。 -
我的意思是,我是否必须阻止某些东西才能停止执行其他脚本并等待用户点击? @LuigiEdlCarno
-
你不能这样做。内置
confirm()的特殊之处在于它同步执行。所有其他 JS 代码将异步执行,或阻塞 UI(即用户将无法交互)。解决方案是为showModalConfirmDialog()提供ok()/cancel()回调,或者让它返回一个promise (jQuery implementation)。
标签: javascript dialog confirm