1. ホーム
  2. javascript

[解決済み] 与えられたHTMLで動的にiframeを作成する

2022-04-21 04:53:19

質問

JavaScriptからiframeを作成し、そこに任意のHTMLを埋め込もうとしているのですが、このようなことは可能でしょうか?

var html = '<body>Foo</body>';
var iframe = document.createElement('iframe');
iframe.src = 'data:text/html;charset=utf-8,' + encodeURI(html);

期待する iframe は、有効なウィンドウとドキュメントを含んでいます。しかし、これはそうではありません。

> console.log(iframe.contentWindow)。

ヌル

ぜひお試しください。 http://jsfiddle.net/TrevorBurnham/9k9Pe/

私は何を見落としているのだろう?

解決方法は?

を設定します。 src 新しく作成された iframe は、その要素が文書に挿入されるまで、HTML パーサーを起動させません。その後、HTMLが更新されると、HTMLパーサーが起動し、期待どおりに属性を処理します。

http://jsfiddle.net/9k9Pe/2/

var iframe = document.createElement('iframe');
var html = '<body>Foo</body>';
iframe.src = 'data:text/html;charset=utf-8,' + encodeURI(html);
document.body.appendChild(iframe);
console.log('iframe.contentWindow =', iframe.contentWindow);

また、この方法はいくつかのブラウザで互換性の問題があることに注意する必要があります。