@resident

Как повесить обработчик события unload на iframe?

Перепробовал уже много вариантов, ни один так и не сработал.

$('#myiframe').unload(function () {
        alert('iframe unloaded');
        iframe_loaded = false;
    });


Это не работает и аналогичные варианты привязки обработчика события на iframе тоже не работают.

Собственно сама задача в следующем: Есть страница, на ней iframe, в нем открываются страницы сайта и с ними из основной страницы производятся манипуляции на javascript. Так вот, нужно перед тем, как производить какие то действия с страницей в фрейме проверить загрузилась ли она иначе ничего не получится. Идея была в том, чтоб ставить флаги с помощью обработчиков событий load и unload загружена страница или выгружена и потом просто проверять их.

PS: Я не сильно спец в javascript, поэтому буду очень благодарен, если есть способ отслеживания статуса страницы в фрейме проще чем раставление флагов и проверка их перед манипуляциями с DOM в фрейме, либо как нормально прикрутить обработчик unload к iframe.
  • Вопрос задан
  • 3618 просмотров
Решения вопроса 1
сейчас похожим занимаюсь - сделал так
var $cont = $('#myiframe_id');
var _oninit = function (e) {
   try {
       var $iframe_doc = $cont.contents();
       if ($iframe_doc
          && $iframe_doc.length
       ) {
             /* Фрейм загружен - можно работать с ним $iframe_doc - это элемент document в фрейме *
             $cont.unbind('load',_oninit);
       } else {
            window.setTimeout( _oninit , 100 );
       }
   } catch (e) {
      window.setTimeout( _oninit, 100 );
   }
};
$cont.bind('load', _oninit );
$cont.attr('src','http://путь к странице которую нужно загрузить в фрейм');


но учтите, что если домен фрейма и верхнего сайта отличается - ничего не выйдет - политика безопасности не даст достучаться до объекта document в фрейме
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
DmitryPRG
@DmitryPRG
PHP программист
в JS можно обратиться к iframe так:
document.getElementById("iframe").contentWindow.document.....

Поэтому попробовать узнать его загрузку через JQ
$( document.getElementById("iframe").contentWindow.document ).ready(function() {
/* code here */
});

Попробуй.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы