3

我不知道该怎么称呼它,但在 google plus 中,当您导航到不同的页面时,HTTP 地址会发生变化,但用户栏似乎保持静态并且不会重新加载。发生了什么,这是如何完成的?

我希望这是有道理的!谢谢!

4

2 回答 2

3

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 的更多信息,请参见此处

于 2013-05-15T07:01:13.230 回答
1

他们很可能正在使用HTML5 History API,特别是pushState添加新历史状态的方法。他们也可能使用 Ajax ( XHR ) 加载新内容,然后通过DOM API将该内容添加到页面。

查看pjax,这是一个为您处理大部分内容的库。

于 2013-05-15T07:00:07.873 回答