Foros del Web » Programando para Internet » Javascript »

Como capturar y/o modificar el contenido de un IFRAME?

Estas en el tema de Como capturar y/o modificar el contenido de un IFRAME? en el foro de Javascript en Foros del Web. loading......... tengo un iframe con el id="algo"; alert($('algo').document.body.innerHTML); <-- no funciona.. alert($('algo').documentWindow.body.innerHTML); <-- no funciona :S como se accede al contenido? o como puedo modificar ...
  #1 (permalink)  
Antiguo 26/10/2007, 14:43
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 6 meses
Puntos: 35
Como capturar y/o modificar el contenido de un IFRAME?

loading.........


tengo un iframe con el id="algo";

alert($('algo').document.body.innerHTML); <-- no funciona..
alert($('algo').documentWindow.body.innerHTML); <-- no funciona

:S como se accede al contenido? o como puedo modificar su mismo contenido?

danke schön.



connection closed.
__________________

Maborak Technologies
  #2 (permalink)  
Antiguo 26/10/2007, 15:16
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 11 meses
Puntos: 61
Re: Como capturar y/o modificar el contenido de un IFRAME?

Sería así:

alert(top.frames['algo'].document.body.innerHTML)

Pero el navegador no te va a dejar por seguridad...
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #3 (permalink)  
Antiguo 26/10/2007, 15:45
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Re: Como capturar y/o modificar el contenido de un IFRAME?

Probá así:
Código PHP:
content=document.getElementById('algo').contentWindow.document.body.innerHTML
  #4 (permalink)  
Antiguo 26/10/2007, 18:16
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Re: Como capturar y/o modificar el contenido de un IFRAME?

Hola:

Con el id puede que tengas problemas con algún navegador, si solo usas un iframe lo que me parece más seguro es usar window.frames[0].document... y si tienes más iframes puedes usar su nombre...

Fíjate en esta página: Iconos online que cada nueva imagen que lees se crea una miniatura que no es otra cosa que un iframe, lo mismo que el recuadro de edición... (estoy seguro que el código lo vas a entender), también tengo otra página donde se interactúa con iframes: Gradientes (php + librerías GD), cada barra deslizante es un iframe.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 27/10/2007, 06:22
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Re: Como capturar y/o modificar el contenido de un IFRAME?

Hola, Pepe, en realidad con el id funciona bien en todos los navegadores que probé (explorer 5, 6 y 7 (pc), Firefox(pc), Ópera(pc) y Safari de MAC). Aunque en realidad lo que se sugiere para aumentar la compatibilidad es esto:
Código PHP:
var myf document.getElementById("myiframe");
myf myf.contentWindow.document || myf.contentDocument
Pero si se puede evitar el uso del id, estoy de acuerdo con la otra manera, aunque hace 1 par de años atrás me dio dolores de cabeza porque algunos navegadores tomaban sólo el índice numérico y otros sólo el nombre como índice del array frames.
  #6 (permalink)  
Antiguo 27/10/2007, 16:53
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Re: Como capturar y/o modificar el contenido de un IFRAME?

Hola Andrés:

La verdad es que no conozco esos atributos, pero si recuerdo que me ha llevado bastante trabajo conseguir que interactúen un iframe con su página contenedora y viceversa... para futuros proyectos, espero acordarme de tus comentarios.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 29/10/2007, 10:50
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 6 meses
Puntos: 35
Re: Como capturar y/o modificar el contenido de un IFRAME?

loading...............


Muchas gracias por responder... pero algo falla.

Código PHP:
var myf document.getElementById("myiframe");
myf myf.contentWindow.document || myf.contentDocument;  
alert(myf.innerHTML//BLANCO
alert(myf.body//undefined 
Caricatos.. como hiciste lo tuyo?... mira, yo no quiero que mi iframe llame funciones de su parent.. solo necesito saber el innerHTML de mi iframe...

pero si hago:

Código PHP:
myf.contentDocument.innerHTML
En firebug me sale "Permiso para obtener la propiedad HTMLDocument.innerHTML denegado" .. será realmente tan complicado copiar el contenido de un simple iframe?...

Ahora bien tambien hacen referencia a elobjetoIFRAME.body, supongo que eso funciona con iframes que tiene una estructura:

<html><head><body>

pero en mi caso.. a veces solo es un archivo de texto.

Gracias por su ayuda.

connection closed.
__________________

Maborak Technologies
  #8 (permalink)  
Antiguo 29/10/2007, 11:11
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Re: Como capturar y/o modificar el contenido de un IFRAME?

Hola:

El objeto window de un iframe se obtiene con window.frames.elIframe (siendo elIframe el nombre que se le haya dado... también podrías referenciar el mismo por su índice... siguiendo la estructura del documento (DOM), detrás deberías poner document.documentElement... y ahí si que podrías aplicar el innerHTML (en explorer también podrías usar outerHTML)... y debes considerar que documentElement se corresponde con el tag html

Te paso el link de mi destripador: Nuevo destripador.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #9 (permalink)  
Antiguo 29/10/2007, 13:59
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 6 meses
Puntos: 35
Re: Como capturar y/o modificar el contenido de un IFRAME?

loading.............

Bueno, creo que no se puede copiar el contenido de un iframe si el iframe es de OTRO DOMINIO :( ni modo... pero seguiré buscando la forma.

connection closed.
__________________

Maborak Technologies
  #10 (permalink)  
Antiguo 29/10/2007, 20:06
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Re: Como capturar y/o modificar el contenido de un IFRAME?

Ah, hubieras empezado por ahí. Si es de otro dominio necesitarás apoyo de lenguaje de servidor, algo como esto:
Código PHP:
<?php
if(isset($_GET['f'])){
echo 
'<base href="http://www.clarin.com" />';
echo 
file_get_contents('http://www.clarin.com');
exit;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>test</title>
<script>
function mostrarseleccion(){
var input = document.getElementById('fr').contentWindow.document;
        if(typeof document.getElementById('fr').contentWindow.document.selection != 'undefined' && document.getElementById('fr').contentWindow.document.selection) {
            alert(input.selection.createRange().text);
            return;
        }
        else {
            alert(document.getElementById('fr').contentWindow.getSelection()); 
            return;
        }

}
</script>
<style>
#bot{
width:150px;
border:1px solid #000000;
background-color:#CCCCCC;
font-family:Verdana, Arial, Helvetica, sans-serif;
font-size:9px;
text-align:center;
padding:2px;
cursor:pointer;
}
</style>
</head>

<body>
<div id="bot" onmousedown="mostrarseleccion()">mostrar selecci&oacute;n</div><br />
<iframe id="fr" name="fr" src="?f" width="500" height="500"></iframe>
</body>
</html>
  #11 (permalink)  
Antiguo 31/10/2007, 10:42
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 6 meses
Puntos: 35
Re: Como capturar y/o modificar el contenido de un IFRAME?

loading............

Je.. si pensé que los cross domain security solo se aplicaban al objeto xmlhttp... asi que terminé implementando la forma que sugeriste Panino, gracias!

connection closed.
__________________

Maborak Technologies
  #12 (permalink)  
Antiguo 15/07/2008, 01:32
Avatar de desendoll  
Fecha de Ingreso: mayo-2008
Mensajes: 340
Antigüedad: 16 años, 6 meses
Puntos: 3
Respuesta: Como capturar y/o modificar el contenido de un IFRAME?

buenas;

Me encuantro con un problema similar, para sacar el contenido fácil:
Código PHP:
$fitxer=fopen("http://www.asdfasf.es""r");
$cont="";
while (!
feof($fitxer)) {
    
$cont=fread($fitxer4096);
    echo 
$cont;
}
fclose($fitxer); 
Pero las imágenes, links, action.... necesitarían el path completo para que funcionasen correctamente, sabéis alguna forma de solucionar esto?¿


PD: Yo solo quería cambiar el fondo de una web de otro dominio... y se me esta liando que no veas.....
__________________
Francesc Jimenez
  #13 (permalink)  
Antiguo 15/07/2008, 22:00
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Respuesta: Como capturar y/o modificar el contenido de un IFRAME?

Usá la etiiqueta base, como en mi ejemplo de arriba.
  #14 (permalink)  
Antiguo 19/04/2009, 12:26
 
Fecha de Ingreso: enero-2009
Ubicación: Elche
Mensajes: 59
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: Re: Como capturar y/o modificar el contenido de un IFRAME?

Cita:
Iniciado por Panino5001 Ver Mensaje
Ah, hubieras empezado por ahí. Si es de otro dominio necesitarás apoyo de lenguaje de servidor, algo como esto:
Hola Panino.
Estoy intentando entender tu código pero no lo logro comprender.
¿Qué hace el ' src="?f" '? ¿Es lo que busca el $_GET?
El código Javascript lo entiendo, pero es el trozo PHP al que no le veo la lógica.

Gracias por la ayuda que me puedas dar.
Un saludo.
  #15 (permalink)  
Antiguo 19/04/2009, 13:10
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Respuesta: Como capturar y/o modificar el contenido de un IFRAME?

Agrego comentarios en el código:
Código PHP:
<?php
/*
si al archivo actual se le envía via get la variable f
mostramos el contenido de la página externa
(el exit es para no mostrar otra cosa que dicho contenido:
mostramos eso y hacemos que el script finalice)
*/
if(isset($_GET['f'])){
echo 
'<base href="http://www.clarin.com" />';
echo 
file_get_contents('http://www.clarin.com');
exit;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>test</title>
<script>
function mostrarseleccion(){
var input = document.getElementById('fr').contentWindow.document;
        if(typeof document.getElementById('fr').contentWindow.document.selection != 'undefined' && document.getElementById('fr').contentWindow.document.selection) {
            alert(input.selection.createRange().text);
            return;
        }
        else {
            alert(document.getElementById('fr').contentWindow.getSelection()); 
            return;
        }

}
</script>
<style>
#bot{
width:150px;
border:1px solid #000000;
background-color:#CCCCCC;
font-family:Verdana, Arial, Helvetica, sans-serif;
font-size:9px;
text-align:center;
padding:2px;
cursor:pointer;
}
</style>
</head>

<body>
<div id="bot" onmousedown="mostrarseleccion()">mostrar selecci&oacute;n</div><br />
<!-- ?f equivale a archivoActual.php?f, es decir, le envía al archivo actual, vía get, la variable f   -->
<iframe id="fr" name="fr" src="?f" width="500" height="500"></iframe>
</body>
</html>
En resumen, si al archivo actual se le envía, vía get, la variable f, muestra un contenido diferente del que muestra si no se le envía dicha variable.
  #16 (permalink)  
Antiguo 20/04/2009, 03:37
 
Fecha de Ingreso: enero-2009
Ubicación: Elche
Mensajes: 59
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: Como capturar y/o modificar el contenido de un IFRAME?

Vale, eso ya lo entiendo, ahora mi duda es, ¿dónde está escribiendo el código php el contenido de la página que está obteniendo?, es decir, esta línea:

echo file_get_contents('xxxxxxxxxxxxxxxxx');

está escribiendo la página que necesitamos, ¿pero dónde, fuera del DOCTYPE?


Muchas gracias por la inestimable ayuda, Panino.
  #17 (permalink)  
Antiguo 20/04/2009, 05:19
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Respuesta: Como capturar y/o modificar el contenido de un IFRAME?

Para entenderlo bien quizá te convenga pensarlo como si ?f fuera un archivo externo. Eso, o ejecutar el archivo, agregar ?f en la barra de direcciones y ver el código fuente resultante.
  #18 (permalink)  
Antiguo 20/04/2009, 08:03
 
Fecha de Ingreso: enero-2009
Ubicación: Elche
Mensajes: 59
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: Como capturar y/o modificar el contenido de un IFRAME?

Gracias Panino, ahora más o menos lo entiendo, lo malo es que estoy intentando hacer lo mismo en JSP pero no sé si se puede, no consigo hacerlo.

Si al final lo consigo os lo diré, aunque sea para tener una forma más de hacerlo.

Un saludo y muchísimas gracias.
  #19 (permalink)  
Antiguo 21/04/2009, 02:56
 
Fecha de Ingreso: enero-2009
Ubicación: Elche
Mensajes: 59
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: Como capturar y/o modificar el contenido de un IFRAME?

Estoy más perdido que un pulpo en un garaje.
Necesito hacer eso mismo en JSP y en ColdFusion, pero no lo consigo y no encuentro nada en los buscadores.
Mi problema es que cuando carga el frame no encuentra el parámetro ?f, por lo tanto ni me agrega la etiqueta 'base', ni me carga el contenido de la otra página ni detiene la ejecución, obteniendo como resultado la misma página cargada dentro de sí misma una y otra vez.

¿Alguien puede ayudarme?
Muchísimas gracias.
  #20 (permalink)  
Antiguo 21/04/2009, 04:45
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Respuesta: Como capturar y/o modificar el contenido de un IFRAME?

Tendrías que abrir un mensaje con tu duda específica en el foro del lenguaje que uses
  #21 (permalink)  
Antiguo 21/04/2009, 04:56
 
Fecha de Ingreso: enero-2009
Ubicación: Elche
Mensajes: 59
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: Como capturar y/o modificar el contenido de un IFRAME?

Cita:
Iniciado por Panino5001 Ver Mensaje
Tendrías que abrir un mensaje con tu duda específica en el foro del lenguaje que uses
Eso mismo acabo de hacer.

Muchísimas gracias por tu ayuda, Panino.

Un saludo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 18:44.