history.pushState
推动潮流页面状态推送到历史记录堆栈,并更改地址栏中的URL。因此,当您返回时,该状态(传递的对象)将返回给您。
目前,仅此而已。任何其他页面操作,例如显示新页面或更改页面标题,都必须由您完成。
您链接的W3C规范只是草稿,浏览器可能会以不同的方式实现它。 例如,Firefox会忽略title
完全参数。
这是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));