javascript - iframes - Establecer iframe innerHTML sin cargar página en él(con jquery)
javascript get document in iframe (3)
Quiero establecer los contenidos de un iframe dinámicamente, cuando no se cargaron páginas antes en el iframe.
Estoy haciendo eso
iframe = $(''<iframe id="thepage"></iframe>'');
iframeHtml = ''iframeHtml'';
$(''body'').append(iframe);
iframe
.contents()
.html(iframeHtml);
Pero no está funcionando, el html todavía está vacío.
la mejor manera de poblar el contenido del marco es document.write
var dstFrame = document.getElementById(''yourFrameId'');
var dstDoc = dstFrame.contentDocument || dstFrame.contentWindow.document;
dstDoc.write(yourHTML);
dstDoc.close()
UPD: eso es
var iFrame = $(''<iframe id="thepage"></iframe>'');
$(''body'').append(iFrame);
var iFrameDoc = iFrame[0].contentDocument || iFrame[0].contentWindow.document;
iFrameDoc.write(''<p>Some useful html</p>'');
iFrameDoc.close();
Si desea evitar el uso de document.write
, que en general ya no se recomienda, puede obtener los contenidos del marco para agregar el contenido:
iframe = $(''<iframe id="thepage"></iframe>'')
iframeHtml = ''iframeHtml''
$(''body'').append(iframe)
iframe.contents().find(''body'').html(iframeHtml)
iframe = $(''<iframe id="thepage"></iframe>''); iframeHtml = ''iframeHtml''; $(''body'').append(iframe); iframe .contents() .html(iframeHtml);
la razón por la que no funciona es porque contents()
devuelve un objeto de document
y html()
solo funciona en objetos HTMLElemnt
, html()
es básicamente un contenedor alrededor de la propiedad innerHTML
y el document
no tiene dicha propiedad.