Убедитесь, что диалог прогресса jquery отображается в течение хотя бы некоторого минимального времени - PullRequest
2 голосов
/ 23 февраля 2010

Я использую диалоговое окно jquery ui, чтобы пользователь знал, что его запрос выполняется, пока клиент обрабатывает некоторые данные. Тем не менее, как вы все знаете, это занимает намного больше времени для обработки, чем Firefox. Как лучше всего убедиться, что диалоговое окно прогресса отображается в течение, по крайней мере, некоторого минимального промежутка времени, чтобы оно не просто мигало в Firefox, а также, что, даже если таймер истекает, диалоговое окно остается активным до завершения работы браузера обработка

1 Ответ

3 голосов
/ 24 февраля 2010

Вы можете решить эту проблему несколькими способами, хотя все они по сути делают некоторую производную очереди.

Например:

$("#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();
    });
});

В любом случае, все, что вы действительно делаете, - это обеспечивает заданную задержку, используя встроенную систему очередей. Вы также можете выполнить это без использования системы очередей, но это еще один пример.

...