我不知道该怎么称呼它,但在google plus中,当你导航到不同的页面时,HTTP地址会发生变化,但用户栏似乎保持静态,不会重新加载。发生了什么?如何做到这一点?
我希望这有意义!谢谢你!
AJAX(异步加载内容)
内容正在异步加载,地址栏中的url正在更改。
异步加载内容的基本示例:
$.ajax({
url: 'http://www.example.net/load.html',
dataType: 'html',
success: function(data){
// This will replace all content in the body tag with what has been retrieved
$('body').html(data);
}
});
查看$.ajax()
文档。
不重定向修改URL
要在不重定向的情况下更改url,您需要使用HTML5历史API。以前也有人问过类似的问题,请看:
修改URL而不重新加载页面
提取回答:
function processAjaxData(response, urlPath){
document.getElementById("content").innerHTML = response.html;
document.title = response.pageTitle;
window.history.pushState({"html":response.html,"pageTitle":response.pageTitle},"", urlPath);
}
有关HTML5 History API的更多信息,请参见这里
很可能他们正在使用HTML5历史API,特别是pushState
方法来添加新的历史状态。他们也可能使用Ajax (XHR)来加载新内容,然后通过DOM API将这些内容添加到页面中。
查看pjax,它是一个库,可以为您处理大部分的问题。