IFRAME の読み込みが完了したら、コールバックを実行する必要があります。IFRAME 内のコンテンツを制御できないため、そこからコールバックを起動することはできません。
この IFRAME はプログラムによって作成されるため、コールバックでそのデータを変数として渡し、iframe を破棄する必要があります。
何か案は?
編集:
私が今持っているものは次のとおりです:
function xssRequest(url, callback)
{
var iFrameObj = document.createElement('IFRAME');
iFrameObj.src = url;
document.body.appendChild(iFrameObj);
$(iFrameObj).load(function()
{
document.body.removeChild(iFrameObj);
callback(iFrameObj.innerHTML);
});
}
このコールバックは iFrame が読み込まれる前に行われるため、コールバックにはデータが返されません。
ベストアンサー1
まず関数名からxssリクエストクロスサイトリクエストを試みているようですが、その場合、iframe の内容を読み取ることはできません。
一方、iframe の URL が自分のドメインにある場合は本文にアクセスできますが、タイムアウトを使用して iframe を削除するとコールバックが正常に機能することがわかりました。
// possibly excessive use of jQuery - but I've got a live working example in production
$('#myUniqueID').load(function () {
if (typeof callback == 'function') {
callback($('body', this.contentWindow.document).html());
}
setTimeout(function () {$('#frameId').remove();}, 50);
});