2012-10-21 70 views
0

我正在製作一個簡單的在線應用程序。 我有一個帶有幾個按鈕和一個「div」的導航欄,所有新內容都將被動態加載到其中,即當我點擊「About」時,它會將頁面部件加載到「div」中,而不用重新加載整個頁面.load()函數。問題是: 如果我需要鏈接到我的網站的文檔部分,或者用戶想要存儲這種鏈接,那麼當瀏覽我的網站時URL不會被重寫。當用戶存儲默認鏈接時,它將始終將其鏈接到默認的「主頁」部分。在AJAX應用程序中重寫URL

我該如何重寫URL,以及什麼是最正確的方法?

+0

您可以在url中使用散列來標識加載的部分,並在獲取頁面時加載內容,即:http://sample.com#about。 但我認爲你錯過了一個更大的問題,也就是說,你的內容不會被索引。阿賈克斯都很好,但我認爲你會錯過它。 – Dementic

+1

查看history.js或jQuery BBQ插件,它可以更改URL中的散列值,並反向分析散列,以便加載適當的內容。它們專爲ajax友好書籤而設計 – charlietfl

+0

只有最近的瀏覽器支持['history' API](http://html5doctor.com/history-api/)。你可能想使用[this wrapper](https://github.com/balupton/History.js/) – Bergi

回答

1

作爲選項,您可以使用location.hash
例如用戶點擊<a href="#about">About</a>
並且您正在加載「關於」頁面的內容。 此外,瀏覽器地址欄中的網址將更改爲http://mysite.com/hello.jsp#about之類的內容。

因此,現在用戶可以複製此URL並訪問它。

然後在$(document).ready()您可以檢查location.hash,發現'#about'錨定在其中,然後加載適當的內容。


另一種選擇是使用Backbone.js或你喜歡的,這將有助於你建立豐富的客戶端應用程序,並會處理這樣的事情對你的任何其他JavaScript MVC框架。

1

據我介紹,合適的方法是更新URL的散列。像example.com/#About等。人們可以爲這些書籤。當您讀取URL中的哈希標記並加載相應的頁面時,您必須小心地進行AJAX調用。

我會做的就是在hashchange事件上做ajax調用而不是點擊。從IE8到所有現代瀏覽器都支持此事件。如果您想支持IE7,請使用Ben Alman的hashchange plugin