可能重复:
修改 URL 而不重新加载页面
我发现在 Facebook 中,如果我单击左侧部分的Notes或Music链接,只有中心部分会在 URL 更改时刷新,从 www.facebook.com 更改为 www.facebook.com/ Notes。
据我所知,更改 URL 将触发整个页面重新加载。Facebook 对其网页有什么魔力?
可能重复:
修改 URL 而不重新加载页面
我发现在 Facebook 中,如果我单击左侧部分的Notes或Music链接,只有中心部分会在 URL 更改时刷新,从 www.facebook.com 更改为 www.facebook.com/ Notes。
据我所知,更改 URL 将触发整个页面重新加载。Facebook 对其网页有什么魔力?
神奇的是history.pushState()。
例子
假设http://mozilla.org/foo.html执行以下 JavaScript:
var stateObj = { foo: "bar" };
history.pushState(stateObj, "page 2", "bar.html");
这将导致 URL 栏显示http://mozilla.org/bar.html,但不会导致 >browser 加载 bar.html 甚至检查 bar.html 是否存在。
您可以使用 javascript 命令(如 pushState/replaceState/popstate)来操作浏览器历史记录
例子:
function processAjaxData(response, urlPath){
document.getElementById("content").innerHTML = response.html;
document.title = response.pageTitle;
window.history.pushState({"html":response.html,"pageTitle":response.pageTitle},"", urlPath);
}