2012-05-01 25 views
5

Tengo una página que anima todo el cuerpo fuera de la pantalla del espectador como una transición. Funciona bien, pero cuando el usuario hace clic en el botón Atrás en el navegador, Firefox muestra la página en caché del historial que no tiene un cuerpo.Volver a cargar la página cuando se visita haciendo clic en el botón Atrás en Firefox

Por lo tanto, es lo suficientemente simple como para volver a cargar la página cuando se visita mediante el botón Atrás.

He intentado el siguiente código para volver a cargar la página para evitar la repetición de la recarga.

<script type="text/javascript"> 
    window.onload=function(){ 
    var e=document.getElementById("refreshed"); 
    if(e.value=="no")e.value="yes"; 
    else{e.value="no";location.reload();} 
    } 
</script> 
<input type="hidden" id="refreshed" value="no"> 

no resuelve el problema ya que la función anónima ni siquiera se invoca.

Así que traté de configurar los encabezados para que el navegador no almacenara en caché la página.

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"> 
<meta http-equiv="Pragma" content="no-cache"> 
<meta http-equiv="Expires" content="0"> 

Asimismo, no ha solucionado el problema.

La página funciona bien en Chrome.

La versión de Firefox que uso es 12,0

¿Cómo puedo obtener la página para volver a cargar el uso de JavaScript, jQuery o cualquier otro scripts del lado del cliente?

+0

No creo que esto funcione en Chrome tampoco, el valor siempre es 'no' –

+0

En Chrome se invoca la función anónima y la página no se vuelve a cargar. Pero aún así, dado que la página no está en caché, no importa. Mi problema es que en Firefox la función ni siquiera se invoca. – mahesmohan

Respuesta

5

No hay evento de carga que se dispara al navegar de regreso a una página en memoria caché.

Usted tiene tres opciones principales, creo:

  1. utilizar el evento onpageshow (que hace fuego cuando se navega a una página en caché).
  2. Evite el almacenamiento en memoria caché en memoria de su página agregando un agente de escucha de eventos de descarga (que puede ser simplemente una función vacía).
  3. No haga la molesta animación de descarga.
+0

Incluso odio la animación de descarga molesta, pero el cliente para el que estoy haciendo esto pidió específicamente la animación de descarga. Muchas gracias, Boris. – mahesmohan

+0

Ah, sí. Los clientes son un poco como un PITA. ;) –

+0

+1. * "Evita el almacenamiento en memoria caché en memoria de tu página al agregar un agente de escucha de eventos de descarga" *, esto funcionó muy bien. Hay algo de [documentación aquí] (https://developer.mozilla.org/en-US/docs/Using_Firefox_1.5_caching). – Qtax

0

No lo probé pero setTimeout puede ayudar.

<script> 
setTimeout(function() { 
var e=document.getElementById("refreshed"); 
    if(e.value=="no")e.value="yes"; 
    else{e.value="no";location.reload();} 
}, 1000); 
</script> 
Cuestiones relacionadas