Форум для web-мастеров              

Здравствуйте, гость ( Вход | Регистрация )

 Правила этого форума Правила раздела "Веб-программирование"
 
Ответить в эту темуОткрыть новую тему
> Progressbar На Javascript
Dagger
сообщение May 6 2009, 11:05 AM
Сообщение #1


Бывалый
**

Группа: Юзеры
Сообщений: 236
Регистрация: 19-August 03
Пользователь №: 332



Здравствуйте!
Помогите, пожалуйста, в решении следующей задачи.

Имеется элемент div, который реагирует на событие onclick:

Код

<div onclick='doStretch(1)'> &rt;&rt; </div>


Функция doStretch() выполняется длительное время, и для утешения пользователя нужно нарисовать progress bar. В моем случае все просто: progress bar - просто анимированный gif, который должен появиться при клике на этот div, и исчезнуть в конце работы функции doStretch():

Код

<script language='javascript'>
  function doStretch(i) {
    initProgress();
/* здесь идет очень долгий процесс, для которого нужно отобразить progress bar*/
     releaseProgress();
  }

  function initProgress() {
    var progressDiv = document.getElementById("stretchProgress");
    progressDiv.style.visibility = "visible";
  }

  function releaseProgress() {
    var progressDiv = document.getElementById("stretchProgress");
    progressDiv.style.visibility = "hidden";
  }
</script>

...

<body>
  <img src='images/progress.gif'  style="visibility: hidden;"  id="stretchProgress"/>

...


Однако этот прямой подход не работает. Браузер сначала полностью выполняет функцию doStretch() и только после этого отображает результат выполнения initProgress() и releaseProgress(), т.е. показывает и прячет картинку, символизирующую progress bar.

Желаемый, но абсолютно неприемлемый, результат получается, если написать функцию initProgress() с alert'ом:

Код

  function initProgress() {
    var progressDiv = document.getElementById("stretchProgress");
    progressDiv.style.visibility = "visible";
            alert("все что угодно");
  }


Здесь alert() является блокирующим вызовом, поэтому браузер прерывает исполнение скрипта и выводит текущий результат на экран. Но alert, как вы понимаете, здесь недопустим, а других блокирующих вызовов типа sleep(), насколько я знаю, в JavaScript нет.

Может кто-нибудь знает, как можно выйти из этой ситуации?

Сообщение отредактировал Dagger - May 6 2009, 11:06 AM


--------------------
ICQ для связи со мной: 761058
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Быстрый ответОтветить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 17th November 2018 - 05:28 AM
IPB Предупреждение [2] in_array() [function.in-array]: Wrong datatype for second argument (Строка: 192 файла /2a4c1e47b05ea5f29b174030a49f0c9b/sape.php)