2009-08-04 19 views
5

Solo quiero aprender a leer el contenido de Iframe en el evento onLoad de iframe y escribir su contenido en la página principal? Gracias ..Lectura de Iframe Content en Iframe Load

+0

Hay una manera de hacerlo, pero es complicado y requiere que el iframe represente una página que generas/que controlas. ¿El contenido de representación iframe que controlas? –

Respuesta

6

He luchado con lo mismo este día. Parece importar cómo accede al iframe. Si usa document.getElementById(), obtiene un objeto Iframe, que no tiene el evento onload. Sin embargo, si accede a través de window.frames[] matriz, por ejemplo

var iframeWindow = top.frames['iframeID'], 

se obtiene un objeto de la ventana, que tiene proceso de carga.

(es decir, utiliza el atributo id marco, pero ff utiliza atributo de nombre. Así que usar tanto y hacer lo mismo)

A continuación, puede asignar

iframeWindow.onload=function(){iframeContent=iframeWindow.document.body.innerHTML;}; 

Aviso, ya que iframeWindow es una ventana objeto, usa la sintaxis de la ventana para acceder al contenido.

+0

Lo hice pero no funcionó para mí. ¿Podrías enviarme tu ejemplo si no te importa? Gracias. – Tarik

+1

1
jQuery("#xiframe").load(function() 
{ 
    var doc = null; 
    try{ 
    doc = this.document || this.contentDocument || this.contentWindow && xiframe.contentWindow.document || null; 
    } catch(err) { 
    alert('error: ' + err.description); 
    } 

    try {    
    if(!doc) { 
    alert('error'); 
    return false; 
    } 
    } catch(err) { 
    alert('error: ' + err.description); 
    return false; 
    } 

    alert(String(jQuery(doc.body).html()); 
} 
+0

Gracias, pero en realidad el principal problema es cómo se completa la carga de la página para obtener el contenido y escribir en el contenido de la página principal. – Tarik

+0

contenido " ... ... " o " ..."? –

+0

Tenga en cuenta que la etiqueta jQuery no se ha especificado. – dotTutorials

0
  • documento de nivel superior (la página en la que aparece el iframe)
  • documento niño (la página que se muestra dentro del marco flotante)

Si estos dos documentos se encuentran en el mismo dominio, puede usar el objeto window.parent.document en el controlador de eventos de carga del documento secundario para acceder al documento principal.

1
document.getElementById('iframeID').contentWindow.onload = function(){ 
    top.document.innerHTML = this.document.innerHTML; 
} 
10

Se puede utilizar esta función jQuery en la página padre y también es compatible con muchas otras funciones para agregar y quitar materias:

<script type="text/javascript"> 
     function myFunction() { 
     var $currIFrame = $('#Frame1'); 
     $currIFrame.contents().find("body #idofElement").val('Value i want to set'); 
      } 
</script> 

En el código anterior: #idofElement es el elemento de la página HTML en iframe cuya valor que desea establecer. Espero que te ayude ..

+1

Una respuesta agradable. No sabía que jQuery tiene esa función 'contents()' y parece realmente útil especialmente con iFrames. – Tarik