JavaScript同步自定义提示

9 javascript jquery

我需要使用自定义提示,就像这个jQuery插件演示中显示的那样.问题是,所有自定义提示都依赖于回调,它们是异步的,我需要它们是同步的.

我需要做类似的事情:

alert("Your name is " + myPrompt("What's your name?"));
Run Code Online (Sandbox Code Playgroud)

其中myPrompt是模态自定义同步提示.

可能吗?

谢谢,纳伊米

Ant*_*nes 3

您可以使用 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.
}
Run Code Online (Sandbox Code Playgroud)

由于 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();
  }
}
Run Code Online (Sandbox Code Playgroud)

当然,任何调用doSomethingWhichNeedsPrompt都需要了解其异步性质,并且doSomethingWhichNeedsPrompt可能需要采用在完成所有工作后调用的函数参数。