history.pushState
pousse le courant de l'état de la page sur l'histoire de la pile, et les changements de l'URL dans la barre d'adresse. Ainsi, lorsque vous revenez en arrière, que l'état (l'objet que vous avez passé) sont retournés à vous.
Actuellement, c'est tout ce qu'il fait. Toute autre action de la page, tels que l'affichage de la nouvelle page ou changer le titre de la page, doit être fait par vous.
Le W3C spec-vous lien n'est qu'un projet, et le navigateur peut mettre en œuvre différemment. Firefox, par exemple, ignore l' title
paramètre complètement.
Voici un exemple simple d' pushState
que j'utilise sur mon site.
(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));