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);
});