确保jquery进度对话框至少显示一段最短时间

确保jquery进度对话框至少显示一段最短时间,jquery,timer,jquery-ui-dialog,progress,Jquery,Timer,Jquery Ui Dialog,Progress,我使用jQueryUI对话框让用户知道,当客户端处理一些数据时,他的请求正在进行中。然而,正如大家所知,ie的处理时间要比firefox长得多。确保进度对话框至少在最短时间内显示,这样它就不会在firefox中闪烁,而且即使计时器过期,对话框也会一直显示到浏览器完成处理为止,最好的模式是什么,虽然它们本质上都做了排队的一些衍生 例如: $("#startLink").click(function(){ var $dialog = $(".dialog"); $dialog.dia

我使用jQueryUI对话框让用户知道,当客户端处理一些数据时,他的请求正在进行中。然而,正如大家所知,ie的处理时间要比firefox长得多。确保进度对话框至少在最短时间内显示,这样它就不会在firefox中闪烁,而且即使计时器过期,对话框也会一直显示到浏览器完成处理为止,最好的模式是什么,虽然它们本质上都做了排队的一些衍生

例如:

$("#startLink").click(function(){
    var $dialog = $(".dialog");
    $dialog.dialog({
        open: function(e, ui){
            // delay any close operations for at least 2 seconds
            $dialog.queue(function(){
                setTimeout(function(){
                    $dialog.dequeue();
                }, 2000);
            });
            // if you're using jQuery 1.4, you can do this instead
            // $dialog.delay(2000);
        }
    });

    // do some processing here

    $dialog.queue(function(){
        $dialog.dialog('close');
        $dialog.dequeue();
    });
});

无论如何,您真正要做的就是使用内置队列系统确保给定的延迟。你也可以不用排队系统来完成,但这是另一个例子。

Great answer@BBonifield!很好地使用了最佳实践!