Перерисовка окна броузера при работе javascript

AKoval

Guest
Перерисовка окна броузера при работе javascript

Прошу прощения за, может быть, некорректный вопрос по javascript.

Есть страница в броузере, отображает список элементов с соответсвующими иконками.

Необхомо в цикле по DOM-документу пройтись по ним, выполнить определенные действия (у меня это обращение через XMLHttpRequest к серверу),и изменить иконки на другие. Это процесс отлажен и работает. Когда цикл обхода закончен - в окне корректно отображаются измененные иконки.

Проблема - так как процесс занимает некоторое время, хотелось информировать пользователя динамически, т.е. пройден узел DOM, изменилась иконка - отобразить измениние (чтобы он был уверен, что программа не зависла). Опыт показал, что в IE, Firefox-е этого не происходит. Т.е. обновленные иконки проявляются только после полного завершения цикла.

Попытка показать промежуточные сообщения в статусной строке работают только в IE. В FireFox-е изменение настроек испонения javascript с разрешением доступа к статусной строке не работает.
Может кто подскажет, где проблема. Почему окно броузера не обновляется в процессе работы скрипта?

Спасибо.

PS: Попробовал progressBar на javascript- результат тот же, броузер уходит в задумчивость и только после выполнения всей работы рисует 100% заполненную линейку.
 

Кром

Новичок
AKoval
Я не совсем понял, где затык.
Если ты можешь обновить одну картинку и вывести сообщение, что все прошло удачно, значит остается сделать цикл, который после каждой итерации будет дорисовывать линейку прогрес-бара. И в этом цикле заменять картинки.
 

AKoval

Guest
Так проблема как раз и в том, что во время цикла, после каждой итерации, я меняю иконы и сообщаю новый процент исполнения в прогресс-бар, но изменения на экране появляются только после завершения цикла (закончен цикл - сменились все иконы и бар заполнен на 100%). Т.е. во время цикла экран не изменяется!!!
В то же время, если в эксплорере я еще пишу в статусную строку (например 'итерация1', 'итерация2',....)- в ней все показывается своевременно!
 

Кром

Новичок
Тогда в других броузерах пиши не в статусную строку. Сделай отдельный слой и в нем прорисовывай прогресс-бар.
 

AKoval

Guest
Так я же и пишу, что прорисовывается только после завершения цикла конечный результат. Хоть в слое, хоть в отдельном окне броузера. А промежуточные значения не прорисовываются. Хотя, если в цикле поставлю alert(), все нормально выглядит.
Вот в чем проблема.
 

Кром

Новичок
>А промежуточные значения не прорисовываются. Хотя, если в цикле поставлю alert(), все нормально выглядит.

Тогда начни все сначала. Создай тестовую страницу с одной картинкой. Измени ее и выведи сообщение. Потом добавь вторую картинку и выведи сообщение между ними. Потом поменяй сообщение на прогресс-бар или что нибудь другое.
Размер кода будет минимальным и тебе будет легче найти свою пробему. После того, как она решится, можешь перенести код на рабочую страницу.
 

AKoval

Guest
Так я же говорю: если вставлены alert-ы в цикле (приостанавливается работа скрипта в броузере при этом)- все отрисовывается нормально.
На следующей неделе попробую упрощеный вариант, без всех наворотов.
 

otdyh

Guest
Ну это особенность IE он показывает что-то по завершению формирования javascriptа.
Что-то будет показано если только будет прерывание события - если ты например знаешь что у тебя 100 иконок, то запускай таймер через setInterval(function,100) - который будет менять прогресс бар опять показанный до замены всех иконок


----
ОТДЫХ.РУ
 
Сверху