history.pushState
помещает текущее состояние страницы в стек истории и изменяет URL-адрес в адресной строке. Итак, когда вы вернетесь, это состояние (объект, который вы передали) будет возвращен вам.
В настоящее время это все, что он делает. Любые другие действия на странице, такие как отображение новой страницы или изменение заголовка страницы, должны выполняться вами.
Спецификация W3C, на которую вы ссылаетесь, является всего лишь черновиком, и браузер может реализовать ее по-другому. Например, Firefoxtitle
полностью игнорирует параметр.
Вот простой пример, pushState
который я использую на своем веб-сайте.
(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));