回答:
データURLを使用してこれを行うことができます。これには、HTMLの単一の文字列にドキュメント全体が含まれます。たとえば、次のHTML:
<html><body>foo</body></html>
次のようにエンコードできます:
data:text/html;charset=utf-8,%3Chtml%3E%3Cbody%3Efoo%3C/body%3E%3C/html%3E
次にsrc
、iframe の属性として設定します。 例。
編集:他の代替手段は、JavaScriptでこれを行うことです。これはほぼ確実に私が選択するテクニックです。ブラウザが受け入れるデータURLの長さは保証できません。Javascriptテクニックは次のようになります。
var iframe = document.getElementById('foo'),
iframedoc = iframe.contentDocument || iframe.contentWindow.document;
iframedoc.body.innerHTML = 'Hello world';
編集2(2017年12月):Saurabh Chandra Patelの回答と同じように、Html5のsrcdoc属性を使用してください。IE / Edgeを効率的に検出できる場合、ヒントは、それらに対してのみsrcdoc-polyfillライブラリを使用し、IE / Edge以外のすべてのブラウザで「純粋な」srcdoc属性を使用することです(caniuse.comで確認してください)。
<iframe srcdoc="<html><body>Hello, <b>world</b>.</body></html>"></iframe>
Blocked a frame with origin "http://localhost" from accessing a cross-origin frame
ます。
innerHTML
ブラウザを使用する場合、子孫スクリプトタグは実行されないことに注意してください。詳細について は、Element.innerHTML MDNページの「セキュリティに関する考慮事項」セクションを確認してください。
使用html5
の新しい属性srcdoc
(srcdoc-ポリフィル)ドキュメント
<iframe srcdoc="<html><body>Hello, <b>world</b>.</body></html>"></iframe>
ブラウザーサポート-次のブラウザーでテスト済み:
Microsoft Internet Explorer
6, 7, 8, 9, 10, 11
Microsoft Edge
13, 14
Safari
4, 5.0, 5.1 ,6, 6.2, 7.1, 8, 9.1, 10
Google Chrome
14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24.0.1312.5 (beta), 25.0.1364.5 (dev), 55
Opera
11.1, 11.5, 11.6, 12.10, 12.11 (beta) , 42
Mozilla FireFox
3.0, 3.6, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 (beta), 50
W3Schoolsによると、HTML 5では新しい「srcdoc」属性を使用してこれを行うことができますが、ブラウザーのサポートは非常に制限されているようです。