Foros del Web » Programando para Internet » Javascript »

Obtener el valor del Iframe

Estas en el tema de Obtener el valor del Iframe en el foro de Javascript en Foros del Web. Hola: Mi problema e sque no sé como coger el valor del iframe. Yo tengo una página(p.php), que contiene: Cita: <form id="formu1" action="<?php echo $_SERVER['PHP_SELF'] ...
  #1 (permalink)  
Antiguo 08/08/2008, 03:26
 
Fecha de Ingreso: septiembre-2007
Mensajes: 234
Antigüedad: 16 años, 7 meses
Puntos: 1
Exclamación Obtener el valor del Iframe

Hola:
Mi problema e sque no sé como coger el valor del iframe. Yo tengo una página(p.php), que contiene:

Cita:
<form id="formu1" action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<table border="1">
<tr>
<td>A&ntilde;os</td>
<td><select id="id_anio" name="id_anio" onChange="this.form.submit()">
<option value=""> Seleccione un a&ntilde;o...... </option>
<?php
$consulta_anios="SELECT * FROM anios ORDER BY anio";
$consul_anios = mysql_query($consulta_anios,$con) or die(mysql_error());
While($result = mysql_fetch_array($consul_anios)){
if ($id_anio == $result['anio'])
echo "<option value=\"".$result['anio']."\" selected>".$result['anio']."</option>";
else
echo "<option value=\"".$result['anio']."\">".$result['anio']."</option>";
}
?>
</select>
</td>
<td><button id="botonEnviar" onClick="return guardarPC();" type="submit">Guardar</button></td>
<td><input type="hidden" id="guardar" name="guardar"></td>
</tr>
</table>
</form>
<iframe name="miframe" id ="miframe" src="generarword.php?anio=<?= $id_anio; ?>" scrolling="yes" frameborder="0" style="min-width:350px; width:1000px; rigth:592px; top:31%; min-height:inherit; "height="500"></iframe>



Esta pagina tiene un slect para selccinoar un año y un boton de "guardar". Además tiene un campo oculto que es donde quiero guardar el contenido del iframe.
Entonces cuando se pulsa en "guardar " se ejecuta:

Cita:
function guardarPC(){
document.getElementById("guardar").value= document.getElementById('miframe').scr;}
pero eso esta mal, poruque no me coge el contenido de iframe.

y el fichero "generarword.php" es un fichero que realiza consultas a la base de datos y muestra el contenido en formato rtf.:
Cita:
<?php
require('../../html2pdf/html2fpdf.php');
header('Content-type: application/msword');
header('Content-Disposition: inline; filename=memoria.rtf');

/*********************CONSULTAS****************/

//Funcion que desconecta con la base de datos
function DesconectarBD($conexion){
mysql_close($conexion);
}
........................
¿Alguien puede decirme como lo puedo hacer? Gracias
  #2 (permalink)  
Antiguo 08/08/2008, 08:57
 
Fecha de Ingreso: septiembre-2007
Mensajes: 234
Antigüedad: 16 años, 7 meses
Puntos: 1
Exclamación Respuesta: Obtener el valor del Iframe

Hola: He probado entre otras cosas con:
Cita:
var w=document.getElementById('miframe');
var bodyIframe = w.contentWindow.document;
alert(bodyIframe);
pero, sigue dándome un error...
Alguien puede ayudarme???
Gracias
  #3 (permalink)  
Antiguo 08/08/2008, 09:35
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Respuesta: Obtener el valor del Iframe

Cita:
var w=document.getElementById('miframe');
var bodyIframe = w.contentWindow.document;
alert(bodyIframe);
Eso no te da el body sino el document del iframe.
Para obtener el html correspondiente a un elemento con id "pp" del iframe con id miframe, sería así:
Código PHP:
ifr=document.getElementById('miframe');
docIfr=ifr.contentDocument || ifr.contentWindow.document;
htmlPP=docIfr.getElementById('pp').innerHTML
y si pp fuera un campo de formulario, para obtener su atributo value, sería así:
Código PHP:
ifr=document.getElementById('miframe');
docIfr=ifr.contentDocument || ifr.contentWindow.document;
htmlPP=docIfr.getElementById('pp').value
  #4 (permalink)  
Antiguo 08/08/2008, 10:16
 
Fecha de Ingreso: septiembre-2007
Mensajes: 234
Antigüedad: 16 años, 7 meses
Puntos: 1
Exclamación Respuesta: Obtener el valor del Iframe

Hola: Greacias por contestar, pero el problema es que no tengo ningún elemento dentro del iframe. Sino que desde el iframe en el src se llama a la página generarword.php y el contenido de esta página son consultas a la BD, de formas que se crea el documento rtf, es decir que el contenido de generarword.php es:
Cita:
<? php ....... echo $ouput ?>
.
Dentro NO tiene ningún elemento. YO lo que quiero es coger el resultado que aparece dentro edl iframe...
Alguien puede ayudarme.???
Gracias!!!
  #5 (permalink)  
Antiguo 08/08/2008, 10:33
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Respuesta: Obtener el valor del Iframe

Entonces sería:
Código PHP:
ifr=document.getElementById('miframe');
docIfr=ifr.contentDocument || ifr.contentWindow.document;
CONTENIDO=docIfr.body.innerHTML
  #6 (permalink)  
Antiguo 08/08/2008, 13:02
 
Fecha de Ingreso: septiembre-2007
Mensajes: 234
Antigüedad: 16 años, 7 meses
Puntos: 1
Exclamación Respuesta: Obtener el valor del Iframe

hola: Gracias de nuevo por ayudarme, pero sigue sin funcionar.
mira he puesto este codigo que me has dicho con los alerts:

Cita:
ifr=document.getElementById('miframe');
alert(ifr);
docIfr=ifr.contentDocument || ifr.contentWindow.document;
alert(docIfr);
contenido=docIfr.body.innerHTML;
alert(contenido);
y justo me da el error en la linea subrrayada en rojo. En concreto me sale el error:
"Interfaz no compatible" :(
por lo que deduzco que es de la linea anterior:
docIfr=ifr.contentDocument || ifr.contentWindow.document;
  #7 (permalink)  
Antiguo 08/08/2008, 13:05
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Respuesta: Obtener el valor del Iframe

Habría que ver en qué contexto estás testándolo, pero esto funciona sin problemas:
Código PHP:
<!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>Documento sin t&iacute;tulo</title>
<
script>
window.onload=function(){
ifr=document.getElementById('miframe');
docIfr=ifr.contentDocument || ifr.contentWindow.document;
htmlPP=docIfr.body.innerHTML
alert(htmlPP);
}
</script>
</head>

<body>
<iframe id="miframe" src="prueba.php"></iframe>

</body>
</html> 
  #8 (permalink)  
Antiguo 08/08/2008, 13:42
 
Fecha de Ingreso: septiembre-2007
Mensajes: 234
Antigüedad: 16 años, 7 meses
Puntos: 1
Exclamación Respuesta: Obtener el valor del Iframe

Hola: He probado tu ultimo ejemplo y si que fucnioa si el contenido de "prueba.php" es de la formas, por ejemplo "HOLA".
Pero si son consultas en php, da error.....
Alguna otra sugerencia.... Lo que quiero es coger los datos del rtf que se generar dentro del iframe y luego guadarlos....
  #9 (permalink)  
Antiguo 08/08/2008, 13:49
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Respuesta: Obtener el valor del Iframe

No tiene que ver con que sean o no consultas php. Lo que sucede es que puede haber problemas con ciertos caracteres y javascript, pero eso ya no es responsabilidad de javascript en realidad. Si lo que necesitás es tomar el contenido para pasárselo a un campo de formulario por ejemplo, quizá te convendría codificar tu archivo rtf en base 64 por ejemplo (con base64_encode) y luego decodificarlo antes de procesarlo (con base64_decode).
Pero en síntesis, ya sabés cómo tomar la data, lo que queda ahora es manejarla para cumplir con tu objetivo.
  #10 (permalink)  
Antiguo 08/08/2008, 15:33
 
Fecha de Ingreso: septiembre-2007
Mensajes: 234
Antigüedad: 16 años, 7 meses
Puntos: 1
Exclamación Respuesta: Obtener el valor del Iframe

hola de nuevo: Ya lo he comprobado y lo qeu me da error es al añadir las cabeceras:
Cita:
header('Content-Disposition: inline; filename=memoria.rtf');
header('Content-type: application/rtf');
Sino las pongo, no aparece el error, pero sino si, que aparece...
Eso no tiene solución no??? porque eso no puedo codificarlo de ninguna forma.....
  #11 (permalink)  
Antiguo 08/08/2008, 15:43
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Respuesta: Obtener el valor del Iframe

Lo que yo haría en tu lugar (y ya en el ámbito de php) es apuntar el src del ifame a una página puente que tome el contenido de la que genera el rtf. Algo así como puente.php.
Y en puente.php, algo como esto:
Código PHP:
<?php
$res
=file_get_contents($archivo);
echo 
base64_encode($res);
?>
  #12 (permalink)  
Antiguo 08/08/2008, 17:11
 
Fecha de Ingreso: septiembre-2007
Mensajes: 234
Antigüedad: 16 años, 7 meses
Puntos: 1
Exclamación Respuesta: Obtener el valor del Iframe

Hola de nuevo. Siento decirte que sigue sin funcioar.
Mira te cuento lo que he probado:
Primero hice que en el iframe apuntara a la página generarword.php y dentro de esta puse el código:
Cita:
<?php
$res=file_get_contents(generarword2.php);
echo base64_encode($res);
?>
siendo el fichero generarword2.php el fichero que generar en rtf.
El problema que tiene esto es que el código que me sale el codigo codificado....
  #13 (permalink)  
Antiguo 10/08/2008, 02:48
 
Fecha de Ingreso: septiembre-2007
Mensajes: 234
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: Obtener el valor del Iframe

Hola, alguien puede ayudarme, por favor.....
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




La zona horaria es GMT -6. Ahora son las 23:22.