Вы можете использовать JQuery UI Dialog для отображения 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
может потребоваться принять параметр функции, который он вызывает после выполнения всей своей работы.