Ver Mensaje Individual
  #5 (permalink)  
Antiguo 02/12/2009, 03:01
joseibarz
 
Fecha de Ingreso: marzo-2009
Mensajes: 76
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Recargar página padre en un ancla

Ok, he estado haciendo pruebas con las dos páginas. Las he creado de nuevo para que únicamente tuvieran html y javascript para no complicar la cosa, pues la original la tengo en asp.

Página padre
Código:
<html>
<head>
<title> padre</title>
<script type="text/javascript">
    function openPopup(strOpen)
    {
        open(strOpen, 'pare','toolbar=no,resizable=yes,scrollbars=yes','_parent');
    }

function muestra(id){
if (document.getElementById){ 
var el = document.getElementById(id); 
el.style.display = 'block';
}
}

function oculta(id){
if (document.getElementById){ 
var el = document.getElementById(id); 
el.style.display = 'none';
}
}

</script>
</head>
<body onload="muestra('mensaje')">
<h1>PAGINA PADRE</h1>
<a href="#posicionEtapas" onclick="oculta('mensaje')">Ir al ancla</a> <br/>
muy larga <br/>
muy larga <br/>
muy larga <br/>
.......
muy larga <br/>
muy larga <br/>
<a href="javascript:openPopup('hijo.html')" onclick="oculta('mensaje')">Abrir ventana hija</a> <br/>
muy larga 2<br/>
muy larga 2<br/>
.......
muy larga 2<br/>
muy larga 2<br/>
<a name="posicionEtapas" id="posicionEtapas"/>
<div style="text-align:center"> A esta altura se encuentra el ancla</div> <br/>
<div id="mensaje" style="display:none;text-align:center"> La pagina se ha recargado</div><br/>
muy larga 3<br/>
muy larga 3<br/>
.......
muy larga 3<br/>
</body>
</html>
Bien, en esta página vemos el ancla, llamada posicionEtapas, un mensaje inicialmente oculto, que se muestra solamente cuando la página acaba de cargar, y se oculta cuando se va desde la misma página a la ancla o cuando se abre la ventana hijo, pues son las dos acciones en que no se ha de recargar la página.

Ventana hijo
Código:
<html>
<head>
    <title>Titulo</title>

<script type="text/javascript">
function redim(){
    ancho = document.getElementById("body").offsetWidth;
    alto = document.getElementById("body").offsetHeight; 
	resizeTo(ancho+10, alto+75); 
}


function reloadPadre(){
var cadena = window.opener.document.location.href;
if (cadena.substring(cadena.length - 15, cadena.length)=='#posicionEtapas')
{
window.opener.document.location.href=cadena.substring(0,cadena.length - 15);
window.opener.document.location.href=cadena;
}
else
{
window.opener.document.location.href=window.opener.document.location.href;
window.opener.document.location.href=window.opener.document.location + '#posicionEtapas';
}
}
</script>
</head>
<body onload="redim();" onunload="reloadPadre();">
<h1> Pagina hijo </h1>

</body>
</html>
La ventana hijo continua igual, cuando se cierra recarga el padre, comprobando si ha venido del ancla o no, y volviéndola a mandar allí.

Lo más sorprendente del caso es que ahora me funciona bien, pues al cerrar la ventana hijo siempre me deja a la altura del ancla...

Crees que puede ser tema de velocidad de respuesta con el servidor el que ejecute una acción antes que la otra? Pues la página original accede a la base de datos, etc. etc.