Foros del Web » Programando para Internet » Javascript »

Actualización del iframe

Estas en el tema de Actualización del iframe en el foro de Javascript en Foros del Web. tengo una página principal disc.php y tengo asignado un iframe de nombre "myframe" que apunta a paginainterior.php. Desde página interior lanzo una ventana nueva (upload.php), ...
  #1 (permalink)  
Antiguo 02/04/2009, 10:59
 
Fecha de Ingreso: marzo-2009
Mensajes: 171
Antigüedad: 15 años, 1 mes
Puntos: 4
Actualización del iframe

tengo una página principal disc.php y tengo asignado un iframe de nombre "myframe" que apunta a paginainterior.php.
Desde página interior lanzo una ventana nueva (upload.php), donde tengo un formulario. Para actualizar paginainterior.php no tengo problemas, simplemente me llega con window.opener.location.reload();. Pero hay veces que necesito desde ésta (upload.php) actualizar la pagina que la abre (la del frame-paginainterior.php) y también la que contiene ésta (disc.php), y todo desde upload.php. ¿Cómo puedo hacer?
  #2 (permalink)  
Antiguo 03/04/2009, 05:00
 
Fecha de Ingreso: marzo-2009
Mensajes: 171
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Actualización del iframe

Más simple lo que quiero es simplemente pasar los datos de un formulario contenido en el i-frame a la ventana padre.
  #3 (permalink)  
Antiguo 03/04/2009, 07:17
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
Puntos: 834
Respuesta: Actualización del iframe

Sería más claro si colocaras un poco de código (breve) con por ejemplo el forumulario (con un campo basta) contenido en el iframe y el de la página que contiene el iframe (principalmente para darnos una idea de el lugar de la página principal donde necesitás recoger la información desde el form del iframe), y también qué es lo que dispararía esa funcionalidad (durante qué proceso o evento debería producirse).
  #4 (permalink)  
Antiguo 03/04/2009, 08:25
 
Fecha de Ingreso: marzo-2009
Mensajes: 171
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Actualización del iframe

Esta es la página principal
<table border="0" cellpadding="0" cellspacing="0" style="width:100%">
<thead>
<tr>
<td>
</td>
</tr>
</thead>
<tbody>
<tr>
<td valign="top">
<div id="cargando" style="width: 100%; height: 500px; position: absolute; padding-top:20px; text-align:center"><span class="fontloadingcont" id="msgspan">Loading content. Please wait...</span></div>
<div id="granDiv" style="visibility:hidden;">
<table border="0" cellpadding="0" cellspacing="0" style="width:100%">
<tr>
<td valign="top" style="width:30%">
<?php include_once('disco/phpfunctions.php');?>
<?php include_once('disco/leftside.php');?>
</td>
<td valign="top">
<iframe id="myframe" name="myframe" width="100%" src="disco/rightside.php" frameborder="NO" border="0" framespacing="0"></iframe>
</td>
</tr>
</table>
</div>
</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>
<?php echo $_REQUEST['accion'];?>
</td>
</tr>
</tfoot>
</table>

<?php include_once('disco/leftside.php');?> incluyo el árbol de directorios a la izquierda, que no es un iframe. Lo metí en archivo a parte para tenerlo más modulado el código.


Ahora el código del frame(una parte):
$table='<table border="0" cellpadding="0" cellspacing="0" style="margin-bottom:5px;" onDblClick="openfile(\''.$node.'\')">
<tr>
<td>
<div style="margin-right:10px;"><img style="cursor:pointer" border="0" src="'.getIcono('../'.$ruta.'/'.$files,'images/').'"></div>
</td>
<td>
<a style="font-size:9px;color:#666;" href="javaScript:loadlink(\''.$node.'\')" class="a_right" onClick="formateo(this,\'a_right\',\'#ca0000\',\'# 666666\');">'.$files.'</a>
<input id="file'.$node.'" type="hidden" value="'.$ruta.'/@@@@'.$files.'@@@@'.$node.'">
<input id="dir'.$node.'" type="hidden" value="'.$dir.'">
</td>
</tr>
</table>';
Esto muestra los ficheros y directorios de una carpeta al hacer click en un item del árbol de index.php.

De aquí me interesa el evento onDblClick="openfile(\''.$node.'\')". Si es una carpeta actualizo este frame y veo su contenido y si hubiera más en el interior sería otra vez el mismo evento.
El problema es que si actualizo esta ventana quiero actualizar también su padre, es decir, en index.php hay un árbol, si yo en el frame abro una carpeta en la principal quiero que se despliegue este item, con lo cual necesito una actualización pero pasando los parámetros.
El código está en php pero la funcionalidad es javaScript.
  #5 (permalink)  
Antiguo 03/04/2009, 08:39
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
Puntos: 834
Respuesta: Actualización del iframe

Por favor podrías colocar sólo código html, sin php, y envuelto en etiquetas de código (menú que está encima del área de texto)?
  #6 (permalink)  
Antiguo 03/04/2009, 08:59
 
Fecha de Ingreso: marzo-2009
Mensajes: 171
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Actualización del iframe

Esta es la página principal
Código:
<body>
<table border="0" cellpadding="0" cellspacing="0" style="width:100%">
	<thead>
		<tr>
			<td>
			</td>
		</tr>
	</thead>
	<tbody>

		<tr>
			<td valign="top">
				<div id="cargando" style="width: 100%; height: 500px; position: absolute; padding-top:20px; text-align:center"><span class="fontloadingcont" id="msgspan">Loading content. Please wait...</span></div>
				<div id="granDiv" style="visibility:hidden;">
				<table border="0" cellpadding="0" cellspacing="0" style="width:100%">
					<tr>
						<td valign="top" style="width:30%">
														
<ul CLASS="mktree" ID="tree1"><li><img border="0" src="disco/images/folder1.gif" /><a href="javaScript:lincardisc('8424096');" id="aul8424096" class="aul"  onClick="javaScript:formateo(this,'aul','#0039AC','#D6571E');">catalogo</a><input type="hidden" id="conexion8424096" value="@@@@catalogo@@@@8424096"></li></ul>						</td>

						<td valign="top">
						<iframe id="myframe" name="myframe" width="100%" src="disco/rightside.php" frameborder="NO" border="0" framespacing="0"></iframe>
						</td>
					</tr>
				</table>
				</div>
			</td>
		</tr>

	</tbody>
	<tfoot>
		<tr>
			<td>
						</td>
		</tr>
	</tfoot>
</table>
<form method="get" target="myframe" action="disco/rightside.php" id="disc_form">
<input type="hidden" name="accion" id="disc_accion">

</form>
<form method="post" id="formdisc">	
<input type="hidden" name="accion" id="acciondisc" value="">
</form>
</body>
Con la función href="javaScript:lincardisc('8424096');" paso el código del directorio para ver su contendido en el frame


Ahora parte del código del iframe
Código:
<table border="0" cellpadding="0" cellspacing="0"><tr><td valign="baseline" align="center" style="padding:5px"><table border="0" cellpadding="0" cellspacing="0"  onDblClick="openfile('16100')">
				<tr>
					<td style="text-align:center">
						<img border="0" style="cursor:pointer" src="images/folder_1.gif">

					</td>
				</tr>
				<tr>
					<td valign="baseline" align="center"  style="margin-bottom:10px">
						<a class="a_right" onClick="formateo(this,'a_right','#ca0000','#666666');" style="font-size:9px;color:#666;margin-bottom:10px;" href="javaScript:loadlink('16100')">almacen</a>
						<input id="file16100" type="hidden" value="catalogo/@@@@almacen@@@@16100">
						<input id="dir16100" type="hidden" value="1">
					</td>

				</tr>
			</table>
Al hacer dobleclick (loadlink) en la carpeta esta se abre, pero a mí lo que me importa es que actualizar el árbol de index.php, la carpeta tiene un id que es el nodo, con lo cual puedo abrir el árbol en el punto exacto.
Si quieres te dejo una dirección para ver su comportamiento.
  #7 (permalink)  
Antiguo 03/04/2009, 09:04
 
Fecha de Ingreso: marzo-2009
Mensajes: 171
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Actualización del iframe

http://www.paginadelcolegio.net/almacen/disc.php
  #8 (permalink)  
Antiguo 03/04/2009, 09:30
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
Puntos: 834
Respuesta: Actualización del iframe

Bueno, igual no me quedó muy claro qué es lo que querés tomar del iframe, ni con qué evento, ni dónde querés ubicarlo en la página principal. De manera que te preparé un ejemplo que usa el evento click en 2 enlaces ubicados en el iframe y envía a la página principal en un caso el texto del enlace y en otro caso la ruta a la que apunta y lo carga en un elemento div de la página principal. Luego lo podrás adaptar a tus necesidades o preguntar en base a eso:
Página principal:
Código:
<!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>
</head>

<body>
<iframe id="myframe" name="myframe" width="100%" src="dos.php" frameborder="NO" border="0" framespacing="0"></iframe>
<div id="log"></div>					
</body>
</html>
Iframe (dos.php):
Código:
<!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>
</head>

<body>
<a href="otro.php" onclick="parent.document.getElementById('log').innerHTML=this.href; return false;">enlace 1</a><br />
<a href="algo.php"  onclick="parent.document.getElementById('log').innerHTML=this.innerHTML;return false;">enlace 2</a>
</body>
</html>
  #9 (permalink)  
Antiguo 03/04/2009, 09:49
 
Fecha de Ingreso: marzo-2009
Mensajes: 171
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Actualización del iframe

Efectivamente en dos onclick="parent.document.getElementById('log').inn erHTML=this.href; return false;" le insertas un texto al id del padre y al mismo tiempo redireccionas el contenido del frame a otro o a algo.
Yo lo que tengo en el principal es un arbol de directorios creados con listado (ul,li). Para cargarlo actualizado no me sirve simplemente insertar texto, necesito recargar toda la página principal(uno) pero pasando información por la url puesto que si hago simplemente una actualizacion parent.location.reload(); refresca pero pierdo los datos transferidos desde dos.php
  #10 (permalink)  
Antiguo 03/04/2009, 10:03
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
Puntos: 834
Respuesta: Actualización del iframe

Aver si te entendí:
principal.php:
Código:
<!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>
</head>

<body onload="if(location.search.length>0){document.getElementById('myframe').src=location.search.split('data=')[1].split('&')[0];document.getElementById('log').innerHTML=location.search.split('data=')[1].split('&')[1].split('=')[1];}">
<iframe id="myframe" name="myframe" width="100%" src="dos.php" frameborder="NO" border="0" framespacing="0"></iframe>
<div id="log"></div>					
</body>
</html>
iframe:
Código:
<!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>
</head>

<body>
<a href="http://www.forosdelweb.com" onclick="parent.location='principal.php?data='+this.href+'&otravariable=loquesea';return false">ir a forosdelweb</a><br />
</body>
</html>

Última edición por Panino5001; 03/04/2009 a las 10:13
  #11 (permalink)  
Antiguo 03/04/2009, 10:21
Avatar de fallenagus  
Fecha de Ingreso: noviembre-2008
Ubicación: Santa Cruz - Bolivia
Mensajes: 52
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: Actualización del iframe

por que no lo haces con href aca un ejemplo:

Código javascript:
Ver original
  1. //si queres podes poner la url manualmente:
  2. paren.location.href="tudominio(.)com/tupagina.html"+"?Parametro=DATOA";
  3.  
  4.  
  5. //o con el mismo javascript:
  6. paren.location.href=paren.location.hostname+paren.location.pathname+"?Parametro=DATOS";
  7. //hostname es tu dominio
  8. //pathname la ruta hasta tupagina.html
  9. //los parametros url los pones manual o con php como querras
  #12 (permalink)  
Antiguo 03/04/2009, 14:04
 
Fecha de Ingreso: abril-2009
Mensajes: 8
Antigüedad: 15 años, 1 mes
Puntos: 0
De acuerdo Respuesta: Actualización del iframe

Wow muy buena info ^^. Gracias a Uds Solucione mis dudas. Se les agradece mucho :P.

Última edición por slither366; 03/04/2009 a las 14:21
  #13 (permalink)  
Antiguo 04/04/2009, 01:44
 
Fecha de Ingreso: marzo-2009
Mensajes: 171
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Actualización del iframe

Perdón por no haber contestado anteriormente, lo voy a probar y en cuanto lo tenga testeado os cuento, pero sí, van por ahí los tiros. 1000 y una gracias.
  #14 (permalink)  
Antiguo 04/04/2009, 02:24
 
Fecha de Ingreso: marzo-2009
Mensajes: 171
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Actualización del iframe

Funciona perfectamentes soy unas máquinas.
Una cosa. Esta es menor. Funciona pero al enviarlo por url se regoge por método GET. ¿No podría hacer lo mismo pero enviándolo por un POST para que la url quede limpia??

La solución que adopte finalmente en el script fue

parent.location='../disc.php?accion='+getvalue(nodo)+'&modo=openfile';

¿No abría un método para hacer lo mismo pero enviándolo a través de un formulario (method=post)????
Si no contestáis es igual os estoy moi moi agradecido.
  #15 (permalink)  
Antiguo 04/04/2009, 09:57
Avatar de fallenagus  
Fecha de Ingreso: noviembre-2008
Ubicación: Santa Cruz - Bolivia
Mensajes: 52
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: Actualización del iframe

Cita:
Iniciado por xurxinho Ver Mensaje
¿No abría un método para hacer lo mismo pero enviándolo a través de un formulario (method=post)????
Si no contestáis es igual os estoy moi moi agradecido.
yo lo haria de esta forma:
en la pagina padre crearia un form y lo pondria en un div al que le daria display='none' y desde el iframe haria submit, te muestro un ejemlo:

pagina padre
Código html:
Ver original
  1. <div style="display:none;">
  2.     <form id="form_oculto" name="form_oculto" method="post" action="lamismapagina.html">
  3.         <input name="parametro_a_pasar1" type="hidden" value="el_valor_que_querras" />
  4.         <input name="parametro_a_pasar2" type="hidden" value="el_valor_que_querras2" />
  5.         ...<!--y asi cuantos parametros querras pasar-->
  6.     </form>
  7. </div>

y desde el iframe haria esto:
Código javascript:
Ver original
  1. parent.document.getElementById('form_oculto').submit();

saludos ojala te sirva
  #16 (permalink)  
Antiguo 05/04/2009, 01:28
 
Fecha de Ingreso: marzo-2009
Mensajes: 171
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Actualización del iframe

Gracias tanto a Panino5001 como fallenagus, sin vosotros no sería posible. Al final tengo los métodos que me hacían falta y funciona la mar de bien.

Opción uno
frame.php

Código:
switch(getvalue(dir)){
		case '1':
		nodo='file'+no;
		putvalue('rightaccion',getvalue('rightaccionanterior'));
		putvalue('rightaccion',getvalue(nodo));
		parent.location='../disc.php?accion='+getvalue(nodo)+'&modo=openfile';
                break;
                (...)
}
En este método recojo los datos por la URL utilizando php
padre.php
Código PHP:
<?php
//método 1
switch($_REQUEST['modo']){
    case 
'openfile':
         
$datos=explode('@@@@',$_REQUEST['accion']);
         echo 
'<script type="text/javascript">setDefault("nodeOpenClass","liOpen");expandToItem("tree1","node'.$datos[2].'");putcolor("aul'.$datos[2].'","#0039AC");lincardisc("'.$datos[2].'");</script>';
    break;
}
?>






Opción dos
(Paso los parámetros a al formulario que hay en padre.php y después hago el refresh:)

frame.php
Código:
switch(getvalue(dir)){
		case '1':
		nodo='file'+no;
		putvalue('rightaccion',getvalue('rightaccionanterior'));
		putvalue('rightaccion',getvalue(nodo));
		parent.document.getElementById('a').value=getvalue(nodo);
		parent.document.getElementById('m').value='openfile';
		parent.document.getElementById('formrefresh').submit();
                break;
                (...)
}

padre.php
Código PHP:
<form method="post" id="formrefresh">
<input type="hidden" id="a" name="accion" >
<input type="hidden" id="m" name="modo" >
</form>

<?php
switch($_REQUEST['modo']){
    case 
'openfile':
         
$datos=explode('@@@@',$_REQUEST['accion']);
         echo 
'<script type="text/javascript">setDefault("nodeOpenClass","liOpen");expandToItem("tree1","node'.$datos[2].'");putcolor("aul'.$datos[2].'","#0039AC");lincardisc("'.$datos[2].'");</script>';
    break;
}
?>


Repito muxas gracias por abrirme el camino sin vuestras aclaraciones sería un poco más ignorante. :apla uso:

Última edición por xurxinho; 05/04/2009 a las 02:43
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 11:36.