是否可以模拟像'window.confirm()'这样的被阻止的对话框?

时间:2011-07-24 09:19:14

标签: javascript html block simulation confirm

我想使用 DIV + JavaScript 模拟阻止对话框,例如window.alert()window.confirm()window.prompt()。使用回调函数似乎很容易。但是我想在显示确认对话框时阻止该过程。

也就是说,我想定义一个类似的函数:

var Alert = function(){ balabala };
单击“确定”或“取消”后,

返回truefalse

修改

现在我定义了一个名为Confirm()的函数,现在我必须将它称为

Confirm(*callback*);

并且在实现中我显示了一个像确认这样的对话框,当单击OK时,将执行回调。我想知道是否可以重写它以便我可以像

那样调用它
if(Confirm()) {
    callback(); 
} else {
    balabala;
}

2 个答案:

答案 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。不幸的是,这并不是最干净的代码。