DOMContentLoaded イベントが発生しない限り (this.els
は要素のオブジェクトです)、以下が機能していないように見えることに驚きました。
this.els.stage_ifr.prop('src', 'templates/'+ee.globals.creating+'/item'+this.id);
this.els.stage_ifr[0].addEventListener('DOMContentLoaded', function() {
alert('loaded!');
}, false);
ページは iframe に正常に読み込まれますが、コールバックはありません。onload
ただし、DOM レベル zeroは機能します。
this.els.stage_ifr[0].onload = function() { alert('loaded!'); }; //<-- fires
回避策は、親ページでグローバルにアクセス可能な jQuery 遅延オブジェクトを準備し、親からの DOM 対応をリッスンするのではなく、iframe に呼び出されたページから発生する DOM 対応イベントを介して解決することです。
親ページ:
dfd = new $.Deferred;
dfd.done(function() { alert("frame page's DOM is ready!"); });
フレームページ:
$(function() { window.parent.dfd.resolve(); });
それにもかかわらず、最初のアプローチがどうなっているのかを知ることは良いことです...