2012-06-08 96 views
24

可能重複:
Modify the URL without reloading the page變更網址在瀏覽器,而重載現有的頁面地址欄

我正在尋找一種方法,使我的內部鏈接使用我當前的javascript功能的動畫,而不會導致該頁面時,你點擊它們重新加載 - 但我想的網址在瀏覽器更新。

很多網站做到這一點,這裏是一個很好的例子:http://grooveshark.com/#!/search?q=adf

他們如何獲取URL無刷新頁面更新?


更多細節:

目前我的頁面上的鏈接看起來像<a href="#aboutus">About Us</a>,這通過JavaScript將帶您到<div id="aboutus"></div>

的JavaScript看起來像:

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

我相信「e.preventDefault()」是什麼原因造成的網址不被更新,但如何防止瀏覽器重新加載頁面時該網址已更改?

如何其他網站做呢?這個方法叫什麼(所以我可以進一步研究它)?

謝謝。

+1

也可能有所幫助:https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history –

回答

23

Here is a similar question

下面是一個例子:

function processAjaxData(response, urlPath){ 
    document.getElementById("content").innerHTML = response.html; 
    document.title = response.pageTitle; 
    window.history.pushState(
     { 
      "html":response.html, 
      "pageTitle":response.pageTitle 
     }, 
     "", 
     urlPath 
    ); 
} 
+1

是啊,在pushState的似乎是缺少一塊拼圖。非常感謝你的歡迎好友 –

+0

;) –

1

像整個事情是用AJAX做在我看來。 URL中的#!導致瀏覽器解釋URL的剩餘部分作爲一個錨 - 錨不會導致頁面重新加載(事實上,服務器永遠不會看到瀏覽器是在一個正常的HTTP的過程中有什麼錨請求)。當URL更改時,Javascript接管,檢查查詢字符串,並使用Web服務從服務器加載適當的任何內容。

我沒有看過深入太多,但這是它看起來像我。

相關問題