-
ID:9AwnOa さんの質問

【質問】JSのDOMContentLoadedが発火しません。

■事象
iframeを動的に作成(createElement)して、
addEventListenerに「DOMContentLoaded」を追加しているが、
iframeのsrc先のDOM読み込み完了時にイベントが発生しません。

■コーディング
var parent_obj = document.getElementById("top");
var obj = document.createElement(’iframe’);

if(obj.addEventListener){
obj.addEventListener("DOMContentLoaded",xxx);//★これが発火しない
//obj.addEventListener("load",xxx);//☆遅い
}else if(obj.attachEvent){
obj.attachEvent("onload",xxx);
}else{
obj.onload = xxx;
}

parent_obj.appendChild(obj);
obj.src = "URL";

function xxx(e){
alert("発火");★これが発火しない
}

■やりたい事
addEventListener("load",xxx)だと画像読み込み後にイベントが発生するので、遅いです。
iframeのソースが返ってきた直後にイベントを呼びたいのです。

■質問
なぜDOMContentLoadedが発火しないのでしょうか。
コーディングが悪いのでしょうか?

それともcreateElement(’iframe’)はDOMContentLoadedのイベントに対応していないのでしょうか?
その場合、上記【やりたい事】の代案はございますでしょうか?

みんなの回答 2 件

ID:e78LPS さんの回答

発火したら危ないよ

ID:rnOvka

トピ主ごめんな、ここは界隈のあるあるネタとかが盛んな場所で、
技術的なことが分かる奴は少ないんだ

ID:9AwnOa

クロスオリジン、クロスドメインがやりたい事の前提です。
その場合、DOM系のイベントが使えないのですね。
それでは上記【やりたい事】の代案はございますでしょうか?

ID:r/rQIp さんの回答

疑問点が2つ。

  • そのスクリプトを実行しているタイミングは?
  • 「画像読み込み後」の画像っていったい何の話が始まったの?

ID:9AwnOa

実行しているタイミングはメイン本体HTMLの読み込み途中です。
iframeで取得したソース先(ページ先)が大量に画像を使っているので。

クロスオリジン、クロスドメインがやりたい事の前提です。
その場合、DOM系のイベントが使えないのですね。
それでは上記【やりたい事】の代案はございますでしょうか?

最終更新日:2016-12-11 (1,636 views)

関連するトピックス

ページ上部に戻る