Палец вверх 8
Перевод
Перевод

Body.onload ждет IFrames?

Я знаю, что событие onload ожидает загрузки ресурсов страницы перед запуском - изображений, таблиц стилей и т. Д.

Но включает ли это IFrames внутри страницы? Другими словами, гарантируется ли, что все загрузки дочерних фреймов будут всегда срабатывать раньше, чем родительские?

Также, пожалуйста, дайте мне знать, если поведение браузеров различается.

html dom browser iframe onload
задан levik 5 июн. 2009 г., 21:34:34
источник

3 ответа

Решение 3
Перевод
Перевод

Как я вижу на своих страницах, каждый iframe получил независимую загрузку, и загрузка верхнего кадра не дожидается запуска iframe.

На моем сайте появились баннеры gif / png, которые иногда загружаются очень медленно, поэтому я поместил их в iframe, что позволило ускорить работу всего сайта и события загрузки.

ответ дан Thinker 5 июн. 2009 г., 21:39:15
источник
Палец вверх 7
Перевод
Перевод

Нет, это не так. Если вы хотите сделать что-то подобное, вам нужно добавить обработчик загрузки для iframe. Вы можете сделать это красиво с JQuery:

  <iframe src="http://digg.com"></iframe>
  <script>
    var count = $('iframe').length;
    $(function() {
      // alert('loaded'); // will show you when the regular body loads
      $('iframe').load(function() {
        count--;
        if (count == 0)
            alert('all frames loaded');
      });
    });
  </script>

Это предупредит, когда все кадры загружены.

Смотрите пример:

http://jsbin.com/azilo

ответ дан cgp 5 июн. 2009 г., 21:45:40
источник
Палец вверх 5
Перевод
Перевод

Или простой JavaScript должен работать ..

function checkIframes() {
   if(!i) { i = 0; }
   if(document.getElementsByTagName('iframe')[i]) {
      document.getElementsByTagName('iframe')[i].onload = function () { i++; checkIframes(); }
   }
   else { yourFunctionInHere(); }
}

на самом деле не проверял это, но должно работать ... чем ссылаться на него с помощью document.onload = function() { checkIframes(); } document.onload = function() { checkIframes(); }

Мне не очень нравятся библиотеки, такие как jQuery, потому что я обнаружил, что могу достичь большего с меньшим количеством кода, с помощью обычного javascript.

ответ дан Wouter Hoolwerf 30 дек. 2010 г., 23:09:46
источник