Puede hacer esto con una URL de datos. Esto incluye todo el documento en una sola cadena de HTML. Por ejemplo, el siguiente HTML:
<html><body>foo</body></html>
se puede codificar así:
data:text/html;charset=utf-8,%3Chtml%3E%3Cbody%3Efoo%3C/body%3E%3C/html%3E
y luego establecer como src
atributo del iframe. Ejemplo .
Editar: La otra alternativa es hacer esto con Javascript. Es casi seguro que esta es la técnica que elegiría. No puede garantizar la longitud de la URL de datos que aceptará el navegador. La técnica de Javascript se vería así:
var iframe = document.getElementById('foo'),
iframedoc = iframe.contentDocument || iframe.contentWindow.document;
iframedoc.body.innerHTML = 'Hello world';
Ejemplo
Edición 2 (diciembre de 2017) : use el atributo srcdoc de Html5 , al igual que en la respuesta de Saurabh Chandra Patel , ¡que ahora debería ser la respuesta aceptada! Si puede detectar IE / Edge de manera eficiente , un consejo es usar la biblioteca srcdoc-polyfill solo para ellos y el atributo srcdoc "puro" en todos los navegadores que no sean IE / Edge (consulte caniuse.com para estar seguro).
<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
navegador no ejecutará las etiquetas de secuencia de comandos descendientes. Para obtener más información, consulte la sección Consideraciones de seguridad de la página Element.innerHTML MDN.use
html5
el nuevo atributosrcdoc
(srcdoc-polyfill) DocsCompatibilidad con navegadores: probado en los siguientes navegadores:
fuente
Según W3Schools, HTML 5 le permite hacer esto usando un nuevo atributo "srcdoc" , pero el soporte del navegador parece muy limitado.
fuente