history.pushStateempuja el estado actual de la página a la pila del historial y cambia la URL en la barra de direcciones. Entonces, cuando regresas, ese estado (el objeto que pasaste) te es devuelto.
Actualmente, eso es todo lo que hace. Usted debe realizar cualquier otra acción de página, como mostrar la nueva página o cambiar el título de la página.
La especificación W3C que vincula es solo un borrador, y el navegador puede implementarla de manera diferente. Firefox , por ejemplo, ignora el titleparámetro por completo.
Aquí hay un ejemplo simple de lo pushStateque uso en mi sitio web.
(function($){
// Use AJAX to load the page, and change the title
function loadPage(sel, p){
$(sel).load(p + ' #content', function(){
document.title = $('#pageData').data('title');
});
}
// When a link is clicked, use AJAX to load that page
// but use pushState to change the URL bar
$(document).on('click', 'a', function(e){
e.preventDefault();
history.pushState({page: this.href}, '', this.href);
loadPage('#frontPage', this.href);
});
// This event is triggered when you visit a page in the history
// like when yu push the "back" button
$(window).on('popstate', function(e){
loadPage('#frontPage', location.pathname);
console.log(e.originalEvent.state);
});
}(jQuery));