Программирование > JavaScript & JScript
Please wait... или Надо до, а оно после.
(1/1)
dub:
По событию onClick происходит длительная обработка iframe.innerHTML. На время этой обработки надо бы вывести "Please wait..." в теле основного документа или, скажем, сделать присвоить style.cursor = \'wait\'. Проблема: какое бы действие я не прописал в onClick, результат его виден только после обработки. А мне надо до.
Пример.
--- Код: ---
function obr() {
document.body.style.cursor = \'wait\'; // ну или, скажем, document.all.commentDiv.innerText = \'Please wait...\'
... обработка iframe.innerHTML ...
}
--- Конец кода ---
После клика по имаджу все замирает (на время обработки), а потом, как ни в чем не бывало, происходит необходимая смена курсора или innerText блока комментария. Очень мило. "Некоторое время до появления этого комментария Вы должны были подождать..."
Ну и как с этим бороться?
mike:
Где-то так:
--- Код: ---
function init_obr() {
document.body.style.cursor = \'wait\';
// ну или
document.all.commentDiv.innerText = \'Please wait...\'
setTimeout( \'obr()\', 1 )
}
function obr() {
... обработка iframe.innerHTML ...
}
--- Конец кода ---
dub:
mike
Спасибо. Попробую. То есть я делаю все то же, только с задержкой в одну миллисекунду. А в чем вообще предпосылки подобнго поведения? Почему, чтобы сохранить поседовательность выполнения, нужно сделать задержку в одну миллисекунду? И тогда точно ли одной хватит? Или просто воспринимать это как жизненную реалию, не понимать, но верить?
mike:
--- Цитировать ---dub:
А в чем вообще предпосылки подобнго поведения? Почему, чтобы сохранить поседовательность выполнения, нужно сделать задержку в одну миллисекунду? И тогда точно ли одной хватит? Или просто воспринимать это как жизненную реалию, не понимать, но верить?
--- Конец цитаты ---
Внутренней кухни браузеров не знаю, но из опыта: дело в том, что браузер не отрисует изменения, пока не завершится выполнение функции. А после того, как задается таймаут, выполнение функции заканчивается, документ отрисовывается, и потом начинается выполнение кода по таймауту.
dub:
mike
М-да, в общих чертах, ясненько. Работает. Спасибо еще раз.
Навигация
Перейти к полной версии