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 DOMonload
dział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 ...