JavaScript同步自定义提示

JavaScript同步自定义提示,javascript,jquery,Javascript,Jquery,我需要使用一个自定义的提示符,就像图中显示的那样。 问题是,所有自定义提示都依赖于回调,它们是异步的,我需要它们是同步的 我需要做一些事情,比如: alert("Your name is " + myPrompt("What's your name?")); 其中myPrompt是一个模式自定义同步提示 可能吗 谢谢, Naimi您可以使用JQuery UI对话框将DIV显示为模式对话框 看 但是,要支持真正的同步对话框(阻塞函数调用),您需要浏览器的帮助。并非所有浏览器都支持它。IE已经做了

我需要使用一个自定义的提示符,就像图中显示的那样。 问题是,所有自定义提示都依赖于回调,它们是异步的,我需要它们是同步的

我需要做一些事情,比如:

alert("Your name is " + myPrompt("What's your name?"));
其中myPrompt是一个模式自定义同步提示

可能吗

谢谢,
Naimi

您可以使用JQuery UI对话框将DIV显示为模式对话框

但是,要支持真正的同步对话框(阻塞函数调用),您需要浏览器的帮助。并非所有浏览器都支持它。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();
  }
}
当然,任何调用
dosomethingwhichnedsprompt
的操作都需要知道它的异步性质,因此
dosomethingwhichnedsprompt
可能需要在完成所有工作后调用函数参数

我需要它们是同步的

你可能需要重新考虑你的需要。IE7+不允许使用even window.prompt(),因此没有跨浏览器的方式来接收同步输入

有showModalDialog,但它不是全球可用的,而且在我看来,它对用户的敌意相当大。在大多数浏览器中,同步不仅会阻塞脚本,还会阻塞浏览器的UI,这可能非常不方便

在我看来,回调并不坏:

myPrompt("What's your name?", function(x) {
    alert("Your name is "+x);
});