4

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

也就是说,我想定义一个函数,如:

var Alert = function(){ balabala };

返回truefalse单击确定或取消后。

编辑

现在我定义了一个名为的函数Confirm(),现在我必须像这样调用它

Confirm(*callback*);

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

if(Confirm()) {
    callback(); 
} else {
    balabala;
}
4

2 回答 2

1

您不能阻止用户使用他们的浏览器 IE 切换选项卡并在他们返回您的选项卡之前对其执行其他操作,就像alert()打电话一样。但是在他们回答问题之前,您可以阻止他们使用您页面上的任何内容。你可以用一个绝对定位的 div 填充整个正文,该 divz-index比页面的其余部分大,并给你的弹出窗口一个z-index比它高的并居中。

当然,用户仍然可以使用 Chrome 开发者工具或 Firebug 之类的工具来删除您的阻塞 div,因此这不是一件安全的事情。

编辑我误读了你的问题。您不关心在视觉上阻塞页面,但希望使弹出窗口的返回值与脚本的其余部分同步,而不是与回调异步。我不知道该怎么做。

也许这对你有用:https ://developer.mozilla.org/en/Code_snippets/Threads#Waiting_for_a_background_task_to_complete

于 2011-07-24T09:23:57.963 回答
0

不幸的是,没有办法只用 JavaScript 模拟同步代码调用。您可以创建纯基于 DOM 的对话框,但为了在它们关闭时执行代码,您需要让它接受回调或返回 Promise。不幸的是,这并不是最干净的代码。

于 2015-12-16T19:54:13.957 回答