Zaskoczyło mnie, że poniższe elementy nie działają, o ile zdarzenie DOMContentLoaded nie zostanie wywołane (this.els
jest obiektem elementów).Wykryj obiekt DOMContentLoaded w elemencie iframe
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 wczytuje się do elementu iframe, ale bez wywołania zwrotnego. Zero poziomu DOM onload
działa.
this.els.stage_ifr[0].onload = function() { alert('loaded!'); }; //<-- fires
Rozwiązaniem jest przygotowanie globalnie dostępnej obiekt jQuery odroczona strony nadrzędnej i rozwiązać go za pomocą zdarzenia DOM gotowy opalanego ze strony o nazwie do iframe, zamiast słuchania dla DOM-ready z rodzic.
Paraent strona: strona
dfd = new $.Deferred;
dfd.done(function() { alert("frame page's DOM is ready!"); });
Rama:
$(function() { window.parent.dfd.resolve(); });
jednak dobrze byłoby wiedzieć, co się dzieje z pierwszym podejściu ...
Wyjątkowo udostępniam łącze do MSDN: [element iframe] (http://msdn.microsoft.com/en-us/library/ms535258%28v=vs.85%29.aspx). Jak można przeczytać na tej stronie, 'DOMContentLoaded' nie może być dołączony do' iframe'. – Teemu
Interesujące - powinienem był pomyśleć, że to było w porządku, pod warunkiem, że ramka jest tej samej domeny. Jeśli to rzeczywiście jest sprawa zamknięta, możesz ją opublikować jako odpowiedź, a ja to zaakceptuję. – Utkanos
Możesz spróbować dołączyć 'DOMContentLoaded' (tylko metodę' document') do 'stage_ifr [0] .contentDocument', po prostu nie jestem pewien, czy w danym momencie byłaby potrzebna ... – Teemu