Как заставить IE 8 ничего не показывать iFrame до завершения элемента onload? - PullRequest
0 голосов
/ 06 июня 2011

Я хочу скрыть элементы сайта, загруженные в iFrame.Сценарий и сайт могут занять некоторое время, поэтому требуется, чтобы содержимое iFrame отображалось только после его изменения.

Я использую событие onload для выполнения сценария, который скрывает элементы.У меня есть доступ к содержимому iFrame (оно находится в том же домене, но не на том же сервере / сети).

function frameLoaded() {
sleep(3000); //simulating the time the script needs
var leftDiv = window.frames.testFrame.document.getElementById("leftcol");
leftDiv.style.display = "none";
}

Простая функция сна:

function sleep(milliSeconds){
var startTime = new Date().getTime(); // get the current time
while (new Date().getTime() < startTime + milliSeconds); // hog cpu
}

Когда веб-сайт сiFrame загружается в первый раз с полосой прокрутки и отображаются некоторые стилизованные элементы, но без содержимого:

http://img651.imageshack.us/img651/5082/beforeu.png

Когда сценарий завершен, страница отображается в видедолжно быть (лазурный цвет div становится скрытым):

http://img51.imageshack.us/img51/6806/afterq.png

Пока работает скрипт, ничего не должно отображаться.Достаточно либо пустого iframe, либо всего сайта, ожидающего завершения загрузки.

1 Ответ

1 голос
/ 06 июня 2011

Вы можете скрыть <iframe id="iframe" style="display: none"> на загрузке родительской страницы и в случае события onload в iframe установить этот параметр в видимый:

function frameLoaded() {
  sleep(3000); //simulating the time the script needs
  var leftDiv = window.frames.testFrame.document.getElementById("leftcol");
  leftDiv.style.display = "none";
  document.getElementById("iframe").style.display = 'block';
}

Кстати: эту функцию сна следует выбросить.

...