2010-07-14 31 views
13

Tengo curiosidad por saber si hay una forma de detectar el evento de actualización del navegador en javascript específicamente. Estamos utilizando el complemento jQuery.address para proporcionar funciones de botón de avance y retroceso a las funciones de AJAX. El problema que estoy enfrentando es que este complemento no parece detectar si el usuario ha actualizado la página.Detectar actualización de navegador en Javascript

Este código se ejecuta cada vez que el usuario avanza o retrocede en el historial del navegador. También me gustaría que exexute cuando el usuario se actualice.

$.address.init(function(event) { 
}).change(function(event) { 

     SummaryDiv.SwapPanels(newPanelID); 
    } 

¿Alguna idea?

Respuesta

5

Un intento ingenuo mío sería simplemente almacenar el estado actual en una cookie después de cada cambio y simplemente cargarlos nuevamente en cada carga de página.

+0

Así es como lo haría, sin buscar otros métodos. Pero sepa que este método podría ser evitado/editado fácilmente por el usuario. –

+5

Como podría todo el sitio web por JavaScript deshabilitado :) – LukeN

+0

Estoy intentando esto. Esto parece ser una solución común. – Nick

1

En una actualización de página, el javascript también se vuelve a cargar. Entonces, ¿no podría especificar lo que quiere que suceda directamente en el método de jQuery listo?

1

que fue capaz de forzar el código de evento de cambio para funcionar con refresco por

window.onload = $.address.update(function(){  
... 
}) 
5

lo largo de estas líneas, que tenía una página cuyo comportamiento no quería repetir si refrescado, así que cambié el hash programáticamente como se describe en this answer.

checkRefresh: function() { 
    if (document.location.hash === '#visited') { 
     console.log('Refreshed'); 
     return true; 
    } else { 
     document.location.hash = 'visited'; 
     return false; 
    } 
} 

ACTUALIZACIÓN

He descubierto que al menos Mobile Safari ignoraría el hash si la actualización se produjo de forma automática (por ejemplo, datos de la página borrados de la memoria caché antes de ser visto de nuevo). Terminé usando una solución más compleja described here.

Cuestiones relacionadas