あなたはうまくいくsrc = encodeURI
はずですが、私は別の方法で行ったでしょう:
var iframe = document.createElement('iframe');
var html = '<body>Foo</body>';
document.body.appendChild(iframe);
iframe.contentWindow.document.open();
iframe.contentWindow.document.write(html);
iframe.contentWindow.document.close();
これにはxドメインの制限がなく、iframe
ハンドルを介して完全に実行されるため、後でフレームのコンテンツにアクセスして操作することができます。確認する必要があるのは、コンテンツがレンダリングされていることです。これは、(ブラウザーの種類に応じて).writeコマンドの発行中/発行後に開始されますが、が呼び出されたときに必ずしも実行されるわけではありませんclose()
。
コールバックを実行する100%互換性のある方法は、次のアプローチである可能性があります。
<html><body onload="parent.myCallbackFunc(this.window)"></body></html>
ただし、Iframeにはonloadイベントがあります。DOM(js)として内部htmlにアクセスする方法は次のとおりです。
iframe.onload = function() {
var div=iframe.contentWindow.document.getElementById('mydiv');
};