IFRAME の読み込みが完了したら Javascript コールバックを実行しますか? 質問する

IFRAME の読み込みが完了したら Javascript コールバックを実行しますか? 質問する

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);
});

おすすめ記事