質問: "URL"; function xxx(e){ alert("発火");★これが発火しない } ``` ■やりたい事 addEventListener("load",xxx)だと画像読み込み後にイベントが発生するので、遅いです。 iframeのソースが返ってきた直後にイベントを呼びたいのです。 ■質問 なぜDOMContentLoadedが発火しないのでしょうか。 コーディングが悪いのでしょうか? それともcreateElement('iframe')はDOMContentLoadedのイベントに対応していないのでしょうか? その場合、上記【やりたい事】の代案はございますでしょうか?
回答: 検証した訳ではないのでハズレかもしれませんが・・・ iframe の中の document オブジェクトに document.addEventListener("DOMContentLoaded", ...) しなければダメなのではないですか? iframe は親ページとは別 window で、その中の document オブジェクトを取得するには contentWindow プロパティ(IE 用)または contentWindow.document(Firefox 他)を使います。 具体例は以下の記事を見てください。(注:その記事のコードの $get() は document.getElementById() と同じです) http://surferonwww.info/BlogEngine/post/2013/01/27/hide-modalpopup-by-clicking-a-button-placed-in-another-page.aspx ただし、iframe に表示するページは親ページと同じドメインのものでないと DOM が取得できないので注意してください(クロスサイトスクリプト対策だそうです)。