私が欲しいもの
AJAX を使用してサーバー側から HTML のフラグメントを読み込んでおり、それをドキュメントに追加しています。フラグメントが完全に DOM に追加されたときに通知を受け取る方法が必要です。
私はこのようなことをしています:
// Load photos.html from the server with ajax
var instance = loadPageWithAjax('photos.html')
// Wait for response
instance.success = function(response){
// Create Parent Object
// Note that I MUST create a new div in my project
var box = document.createElement('div');
box.id = 'photos-box';
// Insert html response to the box's innerHTML
box.innerHTML = response;
// Append box to the dom
document.body.appendChild(box);
}
そして、フラグメントがDOMに追加されたら、そのコンテンツを操作したいのですが、フラグメントが実際にいつDOMに追加されたのかわからないため、できません。
私が試したこと
応答の後にスクリプトを追加しようとしました:
document.getElementById('photo-box') = response
+ '<script>alert(\'loaded\')</script>';
追加されましたが、スクリプトとして読み込まれません。なぜなのかよくわかりません。
次に、部分的に機能する新しいオブジェクトとして追加しようとしました:
var script = document.createElement('script');
script.type = 'text/javascript';
script.innerHTML = 'alert(\'loaded\')';
document.getElementById('photo-box').appendChild(script);
ただし、フラグメントの他の部分よりも高速に読み込まれます。
では、フラグメントが dom に追加されたときに通知を受け取る正しい方法は何でしょうか?