Ответ 1
Вы можете сделать это с помощью 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): используйте атрибут Html5 srcdoc, как в ответе Saurabh Chandra Patel, который теперь должен быть принятый ответ! Если вы можете эффективно определить IE/Edge, совет будет использовать srcdoc-polyfill только для них и "чистый" атрибут srcdoc во всех браузерах без IE/Edge (проверьте caniuse.com чтобы убедиться).
<iframe srcdoc="<html><body>Hello, <b>world</b>.</body></html>"></iframe>