我需要使用自定义提示,就像此jQuery plugin demo中显示的那样。
问题是,所有自定义提示都依赖于回调,它们是异步的,我需要它们是同步的。
我需要做类似的事情:
alert("Your name is " + myPrompt("What's your name?"));
其中myPrompt是模式自定义同步提示。
是否可以?
谢谢,
内见
最佳答案
您可以使用JQuery UI对话框将DIV显示为模式对话框。
参见http://docs.jquery.com/UI/Dialog/dialog#options
但是,要支持真正的同步对话框(阻止函数调用),您将需要浏览器的一些帮助。并非所有浏览器都支持它。 IE已经做了很多年,最近mozilla已将showModalDialog添加到Firefox。
您是否考虑过使用闭包来提供回调的延续?
例子
function dosomethingwhichneedsprompt()
{
var a = "stuff";
var o = {}
//other code
displayPrompt("PleaseInputStuff",o) //o modified by prompt would like this to block
//continue to use data on o and the variable a after prompt dismissed.
}
由于无法在所有浏览器上实现displayPrompt阻止,因此框架将改为使用回调:-
function doSomethingWhichNeedsPrompt(fnContinue)
{
var a = "stuff";
var o = {}
//other code
displayPrompt("PleaseInputStuff",o, fnCallback)
function fnCallback() {
//continue to use data on o and the variable a after prompt dismissed.
if (fnContinue) fnContinue();
}
}
当然,任何调用
doSomethingWhichNeedsPrompt
的东西也都需要知道其异步特性,因此doSomethingWhichNeedsPrompt
可能需要在完成所有工作后采用函数参数。