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));