Recarga de una página al cargar

Como puedo recargar el contenido de una página desde código JavaScript, pero que la recarga sea justo al abrir una nueva ventana, no cuando la página ya se haya cargado. Lo que quiero es que no me coja la página que esta en memoria cache, sino que haga una nueva petición al servidor.
He probado a poner en el BODY "onload=document.reload();" pero no me sirve, necesitaria mas bien un evento de inicio de carga de la pagina (que no se si existe en JavaScript).
1

1 respuesta

Respuesta
1
Lo que quieres hacer, en realidad, no se hace desde Javascript, sino desde el propio código HTML. Se trata de insertar una indicación para que el documento no entre en el caché del navegador, que debe ir justo al principio de la página, dentro de la cabecera (HEAD).
Esta indicación se expresa mediante el tag META, y hay dos modos de hacerlo:
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
De este modo se está indicando que no se "cachee" el documento.
<meta HTTP-EQUIV="Expires" CONTENT="[FECHA]">
De esta forma se indica que la copia de caché no será válida a partir de la FECHA, en el formato "WWW, DD MMM YYYY HH:MM:SS GMT" (y en inglés), por ejemplo: "Mon, 01 Jan 2001 00:00:00 GMT". Si pones una fecha en el pasado, o una fecha ilegal ("0", por ejemplo), el efecto es equivalente al del primer modo.
Así, tendrás que poner este META (el primero, o el segundo con un 0 en la fecha) al principio de la página que vayas a recargar, y después podrás recargarla por cualquier medio:
* Otro META:
<meta HTTP-EQUIV="Refresh" CONTENT="1; URL=pagina.html">
(el número indica los segundos de pausa antes de recargar).
* Con Javascript, usando location.reload()
* Con Javascript, usando history.go(0);
* Con Javascript, usando location.replace(location.href) (este método no deja huellas en la historia del navegador).
Tienes otra posibilidad más para recargar sin caché, y es pasándole un TRUE a location. Reload(). Esto fuerza a hacer una petición GET de HTTP al servidor, saltándose efectivamente la copia de caché local:
location.reload(true);
Puedes hacer esto desde el onLoad de BODY, pero si quieres que se ejecute antes de cargar la página puedes ponerlo directamente en un script en cabecera:
<head>
....
<script language="Javascript">
location.reload(true);
</script>
</head>
Puedes usar el META por un lado y cualquiera de las otras soluciones de recarga (META o Javascript) por el otro. Si tienes cualquier problema, pregúntame de nuevo.
Me funciona perfectamente. Una solución completísima.
Muchísimas gracias por la contestación, por la claridad y por la rapidez en contestar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas