Sono stato sorpreso di scoprire che quanto segue non sembra funzionare, nella misura in cui l'evento DOMContentLoaded non viene attivato (this.els
è un oggetto di elementi).Rileva DOMContentLoaded in 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);
La pagina viene caricata nell'ifrile, ma senza richiamata. Il livello DOM zero onload
, tuttavia, funziona.
this.els.stage_ifr[0].onload = function() { alert('loaded!'); }; //<-- fires
Una soluzione è quella di preparare un oggetto jQuery differita globalmente accessibile nella pagina superiore e risolvere tramite un evento DOM-ready sparato dalla pagina chiamata in iframe, piuttosto che ascoltare per DOM-ready dalla genitore. Pagina
Paraent: pagina
dfd = new $.Deferred;
dfd.done(function() { alert("frame page's DOM is ready!"); });
Telaio:
$(function() { window.parent.dfd.resolve(); });
Tuttavia, sarebbe bene sapere cosa succede con il primo approccio ...
Eccezionalmente viene fornito un collegamento a MSDN: [elemento iframe] (http://msdn.microsoft.com/en-us/library/ms535258%28v=vs.85%29.aspx). Come puoi leggere su quella pagina, 'DOMContentLoaded' non può essere collegato a un 'iframe'. – Teemu
Interessante - Avrei dovuto pensare che fosse perfettamente soddisfacente se il frame è dello stesso dominio. Se questo è davvero un caso chiuso, sentitevi liberi di postarlo come risposta e accetterò. – Utkanos
Puoi provare a collegare 'DOMContentLoaded' (un metodo di' document' only) a 'stage_ifr [0] .contentDocument', non sono sicuro, se esistesse nel momento in cui ne avrai bisogno ... – Teemu