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'');
Creo que el FCKEditor tiene su propia API, consulte http://cksource.com/forums/viewtopic.php?f=6&t=8368
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);
puedes obtener el contenido como
$(''#iframeID'').contents().find(''#someID'').html();
pero el marco debe estar en el mismo dominio, consulte http://simple.procoding.net/2008/03/21/how-to-access-iframe-in-jquery/