我想使用 DIV + JavaScript 模拟阻止对话框,例如window.alert()
,window.confirm()
或window.prompt()
。使用回调函数似乎很容易。但是我想在显示确认对话框时阻止该过程。
也就是说,我想定义一个类似的函数:
var Alert = function(){ balabala };
单击“确定”或“取消”后,返回true
或false
。
修改 :
现在我定义了一个名为Confirm()
的函数,现在我必须将它称为
Confirm(*callback*);
并且在实现中我显示了一个像确认这样的对话框,当单击OK时,将执行回调。我想知道是否可以重写它以便我可以像
那样调用它if(Confirm()) {
callback();
} else {
balabala;
}
答案 0 :(得分:1)
您不能阻止用户使用他们的浏览器IE切换标签,并在他们回到您的之前对其进行其他操作,例如alert()
来电。但是可以阻止他们在页面上使用任何内容,直到他们回答问题为止。你可以用一个绝对定位的div来填充整个身体,该div的z-index
大于你网页的其余部分,并为你的弹出窗口提供一个z-index
一个高于该值的中心。
当然,用户仍然可以使用Chrome开发者工具或Firebug之类的东西删除阻止div,因此这不是一件安全的事情。
修改我误解了您的问题。您不关心是否直观地阻止页面,但希望使弹出窗口的返回值与脚本的其余部分同步,而不是与回调异步。我不知道该怎么做。
也许这对您有用:https://developer.mozilla.org/en/Code_snippets/Threads#Waiting_for_a_background_task_to_complete
答案 1 :(得分:0)
不幸的是,用JavaScript只能模拟同步代码调用。您可以创建基于DOM的纯对话框,但为了让代码在关闭时执行,您需要让它接受回调或返回Promise。不幸的是,这并不是最干净的代码。