Программирование > 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
М-да, в общих чертах, ясненько. Работает. Спасибо еще раз.

Навигация

[0] Главная страница сообщений

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии