У меня есть страница, которая при определенном действии делает iframe видимым и заполняет iframe некоторым HTML-кодом (например, блоком множественного выбора и кнопкой ok).
Для кнопки OK в iframe метод onClick определен примерно так:
onClick="parent.hideIFrame();parent.processMultiSelectBox();"
Когда пользователь нажимает кнопку ОК в iframe (предположительно, после воспроизведения с полем множественного выбора), я бы хотел, чтобы iFrame немедленно исчезал, а затем выбранные значения в окне множественного выбора могут быть обработаны. Но это не то, что происходит. IFrame остается видимым в течение времени, когда другая функция выполняется, и исчезает только после завершения второй функции.
Функция hideIFrame довольно проста:
function hideIFrame() {
frmObj = document.all.iFrameID;
if(frmObj) {
frmObj.style.visibility = "hidden";
}
}
Я перефразировал вышеприведенную функцию для ясности (убрал некоторые назначения переменных индикатора и т. Д.)
Вторая функция фактически выполняет циклы для всех опций в объекте множественного выбора и работает с ним. Это занимает около полсекунды и только после этого мой iFrame исчезает. Немного неприятно видеть, как оно задерживается на полсекунды, когда я нажимаю кнопку ОК.
Мой вопрос: есть ли способ, которым я могу заставить проклятую вещь исчезнуть быстрее. Говоря на языке «классического С», есть ли «флеш», чтобы изменение видимости произошло немедленно?
Я заметил, что если я добавлю «alert» в качестве первой строки в моей второй функции, iframe немедленно исчезнет, но теперь это окно ОК в окне предупреждений, которое задерживается на время, необходимое для завершения второй функции.
Спасибо.
РЕДАКТИРОВАТЬ: Исходя из ответа DDaviesBrackett, это то, что я в итоге сделал:
Клик в iframe изменился на:
onClick="parent.hideAndProcessMultiSelectBox(parm1, parm2);"
Функция hideAndProcessMultiSelectBox была определена как:
function hideAndProcessMultiSelectBox( parm1, parm2 ) {
hideIFrame();
setTimeout( function() { processMultiSelectBox( parm1, parm2 ); }, 0 );
}
Вуаля .. без промедления ..