inside create contentwindow contentdocument content javascript jquery dom iframe

javascript - create - Obteniendo el contenido html de un iframe usando jQuery



js iframe contentdocument (5)

.contents (). html () no funciona para obtener el código html de un iframe. Puedes hacer lo siguiente para conseguirlo:

$(editFrame).contents().find("html").html();

Eso debería devolver todo el html en el iframe por ti. O puede usar "cuerpo" o "cabeza" en lugar de "html" para obtener esas secciones también.

Actualmente estoy intentando personalizar un poco OpenCms (CMS de código abierto basado en Java), que está usando el FCKEditor integrado, que es a lo que estoy tratando de acceder mediante js / jQuery.

Intento recuperar el contenido html del iframe, sin embargo, siempre obtengo un valor nulo como retorno. Así es como trato de obtener el contenido html del iframe:

var editFrame = document.getElementById(''ta_OpenCmsHtml.LargeNews_1_.Teaser_1_.0___Frame''); alert( $(editFrame).attr(''id'') ); // returns the correct id alert( $(editFrame).contents().html() ); // returns null (!!)

Mirando la captura de pantalla, lo que quiero acceder es la sección html ''LargeNews1 / Teaser'', que actualmente tiene los valores "Newsline en ...". A continuación también puede ver la estructura html en Firebug.

Sin embargo, $(editFrame).contents().html() devuelve un valor nulo y no puedo entender por qué, mientras que $(editFrame).attr(''id'') devuelve la identificación correcta.

El contenido de iframe / FCKEditor está en el mismo sitio / dominio, sin problemas entre sitios.

El código HTML de iframe está en http://pastebin.com/hPuM7VUz

Actualizado:

Aquí hay una solución que funciona:

var editArea = document.getElementById(''ta_OpenCmsHtml.LargeNews_1_.Teaser_1_.0___Frame'').contentWindow.document.getElementById(''xEditingArea''); $(editArea).find(''iframe:first'').contents().find(''html:first'').find(''body:first'').html(''some <b>new</b><br/> value'');



Su iframe:

<iframe style="width: 100%; height: 100%;" frameborder="0" aria-describedby="cke_88" title="Rich text editor, content" src="" tabindex="-1" allowtransparency="true"/>

Podemos obtener los datos de este iframe como:

var content=$("iframe").contents().find(''body'').html(); alert(content);


Sugiero reemplazar la primera línea con:

var editFrame = $(''#ta_OpenCmsHtml.LargeNews_1_.Teaser_1_.0___Frame'');

... y la 2ª expresión de alerta con:

editFrame.html()

Si, por otro lado, prefiere lograr lo mismo sin jQuery (mucho más genial, IMHO) solo podría usar JavaScript:

var editFrame = document.getElementById(''ta_OpenCmsHtml.LargeNews_1_.Teaser_1_.0___Frame''); alert(editFrame.innerHTML);