javascript - La página no se recarga a través de ''atrás'' cuando se usa pushState()/onpopstate
html5 (1)
El estado inicial no tiene una propiedad .state
disponible, porque no usó .pushState
para agregar dichos datos (se cargó de la forma normal que describe).
Sin embargo, lo que sí sabe es que si no hay un estado .state
, debe ser el estado original, por lo que puede usar un bloque else
como este: http://jsfiddle.net/pimvdb/CCgDn/1/ .
Por último, puede utilizar e.state
.
window.onpopstate = function(e){
if(e.state !== null) { // state data available
// load the page using state data
initiate_load_updated_page(e.state.ajax_string, window.history.state.security, 0);
} else { // no state data available
// load initial page which was there at first page load
}
}
Estoy actualizando algunas páginas con AJAX y, por lo tanto, actualizo el historial con el siguiente código:
/** Update the page history */
var pushState_object = {
ajax_string: ajax_string,
security: security,
};
window.history.pushState(pushState_object, title, permalink);
Entonces llamo a esta función onPopState en la carga de la página -
window.onpopstate = function(e){
if(window.history.state !== null){
initiate_load_updated_page(window.history.state.ajax_string, window.history.state.security, 0)
}
}
Estoy teniendo un pequeño problema con el botón de retroceso al pasar de una página donde el contenido se generó a través de AJAX a una página que se cargó de la forma habitual. La URL cambiará, pero la página no se volverá a cargar. Volver a hacer clic nuevamente me lleva a la página anterior, como es de esperar, y luego seguir adelante funciona bien: es solo en esa situación donde el botón Atrás no funciona.
Cualquier sugerencia aquí sería apreciada.