关于javascript:在浏览器地址栏中更改URL而不重新加载现有页面

Change URL in browser address bar without reload existing page

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Modify the URL without reloading the page

我正在寻找一种方法,让我的内部链接使用我当前的javascript动画,而不导致页面重新加载时,你点击它们-但我想在浏览器中更新的URL。

很多网站都这样做,这里有一个很好的例子:http://grooveshark.com/!搜索?q=ADF

他们如何在不重新加载页面的情况下更新URL?

更多细节:

目前我页面上的一个链接看起来像About Us,这将通过javascript把你带到

javascript看起来像:

1
2
3
4
$("#navigation a").click(function(e){
  animate(..scroll to section..);
  e.preventDefault(); // <==========
});

我相信"e.preventDefault()"是导致URL不被更新的原因,但是如何防止浏览器在URL更改时重新加载页面?

其他网站是如何做到的?这个方法叫什么(这样我可以进一步研究它)?

谢谢。


这里有一个类似的问题。

下面是一个例子:

1
2
3
4
5
6
7
8
9
10
11
12
function processAjaxData(response, urlPath){
    document.getElementById("content").innerHTML = response.html;
    document.title = response.pageTitle;
    window.history.pushState(
        {
           "html":response.html,
           "pageTitle":response.pageTitle
        },
       "",
        urlPath
   );
}


在我看来,整个过程都是用Ajax完成的。URL中的#!导致浏览器将URL的其余部分解释为锚——锚不会导致页面重新加载(事实上,服务器在正常的HTTP请求过程中永远看不到浏览器所使用的锚)。当URL更改时,javascript将接管、检查查询字符串,并使用Web服务从服务器加载任何合适的内容。

我没有深入地研究过它,但这就是它在我看来的样子。