2009-11-01 36 views
7

我正在製作一個網站,傾向於處理一個頁面(Ajax)中的所有請求。 ,所以我認爲我可以捕獲每一個用戶點擊一個鏈接,並檢查IF它在我的網站,我做一些事情上的JavaScript例如像一個Ajax請求,ELSE它會打開鏈接像往常一樣!如何監控URL中的更改(片段標識符 - URL的錨點部分)

在window.location上做手錶沒有工作! 此外,我不知道是否有無論如何得到#符號後的網址部分。 注:無論使用Gmail和Facebook做,我猜!他們使用的是這樣的:?
http://mail.google.com/mail/#inbox
http://www.facebook.com/home.php#/收件箱/ REF = MB

笑納:那我喜歡在我的項目中使用jQuery,所以使用它的任何解決方案都是首選。

任何想法?

+1

@Omar:#之後的部分URL是'hash'。編輯您的問題標題和標籤。 :) – 2009-11-01 15:21:42

+4

@ o.k.w:#之後的URL部分稱爲'片段',而不是散列。 – 2009-11-01 15:22:49

+0

@ o.k.w謝謝,我不是'本地'英語,所以隨時糾正它更明顯。 – 2009-11-01 15:28:35

回答

4

這裏是另一個好讀:從文章Restoring Conventional Browser Navigation to AJAX Applications

摘錄:

許多開發商都採用AJAX來開發豐富的Web應用程序 是幾乎一樣的互動和 響應爲 方式桌面應用。 AJAX通過將網絡用戶界面劃分爲 不同的部分來工作。用戶可以在一個分段上執行 操作,然後 開始在其他分段 上工作,而無需等待第一個 操作完成。

但AJAX有一個主要的缺點;它 打破標準瀏覽器行爲,如 作爲後退,轉發和書籤 支持。而不是強迫用戶去適應AJAX的缺點, 開發者應該使他們的AJAX 應用符合 傳統網絡交互 樣式,.......

+0

良好的信息,我總是喜歡認真考慮我的網站的可用性。 – 2009-11-01 15:39:12

4

片段網址的一部分用來啓用導航(前進和後退按鈕)上支持AJAX的網站的歷史記錄。如果你想「陷阱」點擊鏈接,因爲你使用jQuery無論如何,你可能只是這樣做:

$('a').click(function() 
{ 
    var item = $(this); 
    var url = item.attr('href'); 
    // your logic here 
}); 

如果您在使用星座碎片(window.location.hash)與AJAX,注意IE6在AJAX請求中提交url的片段部分,這可能會導致非常難以調試的錯誤,因此請注意這一點。

+0

Ta,正是我所需要的。 – Pool 2009-11-19 13:58:45

3

查看@Pekka的鏈接How can you check for a #hash in a URL using JavaScript?來查看散列。只需在回調函數中加入window.setInterval()

+0

注意:window.setInterval()可能會殺死性能!我更喜歡使用事件處理程序(特別是jQuery的方式) – 2009-11-01 15:37:33

+0

如果你看看jQuery的hashchange - 它只是一個除了IE8以外的一個setinterval腳本。雖然,這是一個很好的腳本。 – Justin 2009-11-01 23:24:48

+0

哦!我想我可能會爲此轉儲它。 – 2009-11-02 12:11:48

4

對於最新的瀏覽器,窗口上會發布hashchange事件。

+1

我正在尋找一個向後兼容(如IE6 :()解決方案。 因此,我寧願監視錨點擊。 – 2009-11-01 15:58:53

+4

嗯,http://plugins.jquery.com/project/hashchange做的伎倆:) 。感謝關鍵字'hashchange' – 2009-11-01 16:02:58

相關問題