Вы можете сделать это с помощью 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 г.) : используйте атрибут srcdoc Html5 , как и в ответе Саураба Чандры Пателя , который теперь должен быть принятым ответом! Если вы можете эффективно обнаруживать IE / Edge , советуем использовать библиотеку srcdoc-polyfill только для них и атрибут «чистый» srcdoc во всех браузерах, отличных от IE / Edge ( для уверенности проверьте 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-polyfill) DocsПоддержка браузера - протестировано в следующих браузерах:
источник
Согласно W3Schools, HTML 5 позволяет делать это с помощью нового атрибута «srcdoc» , но поддержка браузера кажется очень ограниченной.
источник