私は ajax 経由で html をロードし、その html を div に入れています。div に入れられた html がロードされたら、javascript をトリガーするにはどうすればよいですか?
onload イベントがこれを探しているものなのか、それとも div 要素で使用できるのかはわかりません。この html は非同期で div に配置されることに注意してください。
編集:
HTMLにはYouTubeビデオが埋め込まれているため、画像をロードする必要があります。
私は ajax 経由で html をロードし、その html を div に入れています。div に入れられた html がロードされたら、javascript をトリガーするにはどうすればよいですか?
onload イベントがこれを探しているものなのか、それとも div 要素で使用できるのかはわかりません。この html は非同期で div に配置されることに注意してください。
編集:
HTMLにはYouTubeビデオが埋め込まれているため、画像をロードする必要があります。
div に入れられた html がロードされたら、javascript をトリガーするにはどうすればよいですか?
コンテキストをdiv、onreadystatechange
提供されるコールバックXMLHttpRequest
(または使用しているライブラリが提供する「完了」コールバック)に配置した後、それを行うだけです。
例えば:
var xhr = new XMLHttpRequest(/* ... */);
// ...
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status >= 200 && xhr.status <= 299) {
/* ...put the content in the div...*/
/* ...call your function... */
}
};
xhr.send();
にコンテンツを配置する方法は示されていませんが、div
すぐに配置されるため、コールバックは必要ありません。
いくつかのコメントは、有用な質問を提起しました: ロードされたコンテンツの画像などはどうですか? それはもっと複雑です。
コンテンツを に配置した後(クリエイティブに という名前の変数にdiv
があると仮定します)、不完全な画像がいくつあったかを知る必要があります (競合状態を考慮してください。ブラウザーのJavaScriptはシングルスレッドですが、ブラウザーはすべての画像がロードされたら、コードをトリガーします。div
div
少し似ています (これがすべて関数内にあると仮定すると、おそらくonreadystatechange
ハンドラー):
var images = div.querySelectorAll('img'),
img, i, done = false;
for (i = 0; i < images.length; ++i) {
img = images[i];
img.onload = img.onerror = checkDone;
}
checkDone();
function checkDone() {
var x, completed = 0;
if (done) {
return;
}
for (x = 0; x < images.length; ++x) {
if (images[x].complete) {
++completed;
}
}
if (completed === images.length) {
done = true;
/* ...call your "load" function here... */
}
}