2010-01-05 72 views
3

我的網站上有一個頁面,它通過AJAX請求了相當多的內容。我遇到的問題是,如果您在網站上閒逛並且在技術上沒有網址的網頁上,則無法複製/粘貼網址並將其發送給某人,因爲您只會在主頁上結束。指向AJAX網址的鏈接

我在看Facebook,他們使用一個錨點來尋找通過原始URL請求的URL,如下所示:http://www.facebook.com/#/somepage(如果您在主頁上並轉到somepage,那是一個AJAX請求)。

設置的URL的錨就不會在所有問題,因爲我用我所有的AJAX的東西<a>標籤反正,但我會怎麼能夠得到mysite.come/#/some-ajax-page/正常工作和顯示some-ajax-page應該是什麼,不只是試圖在DOM中找到名爲/some-ajax-page/的錨?

P.S.我使用jQuery作爲我的JS和Django服務器端

回答

4

您可以使用document.location對象引用當前頁面的URL。這不是標準,但是,我知道每個瀏覽器都支持它。該對象的hash屬性爲您提供了哈希符號背後的部分。

所以,在你的jQuery。就緒功能,可以探測document.location.hash(您例如URL http://www.facebook.com/#/somepage,將評估爲/somepage),並解釋它做一切必要重新創建你頁面的適當的狀態。你需要在這裏做什麼邏輯當然取決於你 - 我們無法聞到你的頁面可以擁有什麼狀態,以及你想如何在錨文本中表示它們。

有關更多信息,請參閱位置對象的mozilla文檔。 AFAIK所有瀏覽器都支持這些屬性:https://developer.mozilla.org/en/DOM/window.location

+0

太棒了!這正是我正在尋找的......某種方式只是「閱讀」JavaScript中的錨點。萬分感謝! – Zack 2010-01-05 18:58:19

-1

只需從請求的URL中獲取片段(您可能需要使用request.get_full_path()),然後在服務器上正確構建頁面。

+1

我不相信URL片段可以在服務器端訪問(無需通過AJAX調用有意發送它) - 它完全是客戶端。 – ceejayoz 2010-01-05 18:56:14

1

結賬jQuery BBQ。我們最近在項目上使用了類似的東西,而且非常漂亮。

其基本思想是基於散列來監聽哈希和運行函數(即通過ajax獲取新頁面)的更改。

+0

這可能就是我最終使用的...非常漂亮的插件,我現在正在閱讀它。謝謝! :) – Zack 2010-01-05 19:04:46

+0

沒問題。我希望它有幫助。 – davethegr8 2010-01-05 19:47:05