De this question (How to get request url in a jQuery $.get/ajax request) Descubrí que puedo recuperarlo con this.url
.
De MDC window.history me encontré con la sintaxis y de MDC Manipulating the browser history He descubierto que puedo conseguir el estado actual con history.state
(no parece funcionar en Chrome aunque) y descubrieron que cuando se llama a pushState
sólo puedo enviar 640K caracteres en la stateObject
o si no arroja una excepción.
Mi método actual de peticiones ajax éxito es:
OnSuccess: function(html, status, xhr){
var requestedUrl = this.url.replace(/[&?]X-Requested-With=XMLHttpRequest/i, "");
// if the url is the same, replace the state
if (window.location.href == requestedUrl)
{
history.replaceState({html:html}, document.title, requestedUrl);
}
else
{
history.pushState({html:html}, document.title, requestedUrl);
}
},
Para una prueba básica que estoy almacenando el resultado completo de la stateObject
, si se produce una excepción que se ajustará la URL en lugar de ser capaz de hacer una nueva solicitud.
Mi caso es popstate
$(window).bind("popstate", function (e) {
var state = e.originalEvent.state;
$("#body").html(state.html);
});
Restaura la página como lo fue anteriormente, no necesito hacer una nueva solicitud.