Wykryj DOMContentLoaded w iframe

Byłem zaskoczony, gdy okazało się, że poniższe informacje nie działają, ponieważ zdarzenie DOMContentLoaded nie uruchamia się (this.els jest obiektem elementów).

this.els.stage_ifr.prop('src', 'templates/'+ee.globals.creating+'/item'+this.id);
this.els.stage_ifr[0].addEventListener('DOMContentLoaded', function() {
    alert('loaded!');
}, false);

Strona ładuje się do iframe w porządku, ale bez wywołania zwrotnego. Zerowy poziom DOMonloaddziała jednak.

this.els.stage_ifr[0].onload = function() { alert('loaded!'); }; //<-- fires

Rozwiązaniem jest przygotowanie globalnie dostępnego obiektu odroczonego jQuery na stronie nadrzędnej i rozwiązanie go za pośrednictwem zdarzenia gotowego do użycia w domenie wywoływanego ze strony wywoływanej w ramce iframe, zamiast słuchania gotowego modelu DOM przez rodzica.

Strona Paraent:

dfd = new $.Deferred;
dfd.done(function() { alert("frame page's DOM is ready!"); });

Strona ramki:

$(function() { window.parent.dfd.resolve(); });

Niemniej jednak dobrze byłoby wiedzieć, co się dzieje z pierwszym podejściem ...

questionAnswers(3)

yourAnswerToTheQuestion