origin inside iframes from cross contentdocument content accessing javascript iframe innerhtml

javascript - inside - js iframe contentdocument



Javascript Iframe innerHTML (8)

Creo que esto es lo que quieres:

window.frames[''iframe01''].document.body.innerHTML

EDITAR:

Tengo la buena idea de que esto no funcionará en Chrome y Firefox, aunque funciona perfectamente en IE, que es donde lo probé. En retrospectiva, eso fue un gran error

Esto funcionará:

window.frames[0].document.body.innerHTML

Entiendo que esto no es exactamente lo que se pidió, pero no quiero eliminar la respuesta porque creo que tiene un lugar.

Me gusta la respuesta de jquery de @ravz a continuación.

¿Alguien sabe cómo sacar el HTML de un IFRAME? He intentado de diferentes maneras:

document.getElementById(''iframe01'').contentDocument.body.innerHTML document.frames[''iframe01''].document.body.innerHTML document.getElementById(''iframe01'').contentWindow.document.body.innerHTML

etc


La respuesta de Conroy era correcta. En el caso de que solo necesite cosas de la etiqueta corporal, solo use:

$(''#my_iframe'').contents().find(''body'').html();


No olvide que no puede cruzar dominios debido a la seguridad.

Entonces, si este es el caso, debes usar JSON .


Puede obtener la fuente desde otro dominio si instala el filtro ForceCORS en Firefox. Cuando active este filtro, omitirá la función de seguridad en el navegador y su secuencia de comandos funcionará incluso si intenta leer otra página web. Por ejemplo, podría abrir FoxNews.com en un iframe y luego leer su fuente. La razón por la cual los web brwosers modernos niegan esta capacidad por defecto es porque si el otro dominio incluye un fragmento de JavaScript y estás leyendo eso y mostrándolo en tu página, podría contener código malicioso y representar una amenaza a la seguridad. Por lo tanto, cada vez que muestre datos de otro dominio en su página, debe tener cuidado con esta amenaza real e implementar una forma de filtrar todo el código JavaScript del texto antes de mostrarlo. Recuerde, cuando una supuesta pieza de texto sin procesar contiene algún código incluido en las etiquetas de script, no se mostrarán cuando lo muestre en su página, ¡sin embargo, se ejecutarán! Entonces, date cuenta de que esto es una amenaza.

http://www-jo.se/f.pfleger/forcecors


Puede usar la propiedad contentDocument o contentWindow para ese fin. Aquí está el código de ejemplo.

function gethtml() { var x=document.getElementById("myframe"); var y=(x.contentWindow || x.contentDocument); if (y.document)y=y.document; alert(y.body.innerHTML); }

aquí, mi marco es la identificación de tu iframe. Nota: No puede extraer el contenido de un iframe de un src fuera de su dominio.


Si echa un vistazo a JQuery , puede hacer algo como:

<iframe id="my_iframe" ...></iframe> $(''#my_iframe'').contents().find(''html'').html();

Esto supone que su padre e hijo iframe residen en el mismo servidor, debido a la misma política de origen en Javascript.


Tener algo como lo siguiente funcionaría.

<iframe id = "testframe" onload = populateIframe(this.id);></iframe> // The following function should be inside a script tag function populateIframe(id) { var text = "This is a Test" var iframe = document.getElementById(id); var doc; if(iframe.contentDocument) { doc = iframe.contentDocument; } else { doc = iframe.contentWindow.document; } doc.body.innerHTML = text; }


document.getElementById(''iframe01'').outerHTML