2011-10-29 29 views
0

我有我所有的JavaScript代碼,我在一個單一的縮小庫的項目。 有一些函數僅對特定的頁面URL運行,但是當鏈接沒有它的href屬性,而是有一個元素ID,它的href屬性被點擊,並且頁面被刷新時,函數不會運行。 任何想法是什麼問題?例如, ; 當網址http://localhost/pheedbak/users/home 但是當URL變化http://localhost/pheedbak/users/home#directed-pheeds,功能不運行頁面特定的JavaScript函數

的代碼是這樣的

url = "http://localhost/pheedbak/users/home"; 

    if(window.location.href == url) 
    { 
     pheeds.LoadLatestPheeds(); 
    } 
+1

不知道你的意思。例? –

+0

這意味着腳本依賴於具有普通URL的鏈接元素,並且錨鏈接失敗。 – katspaugh

+0

@katspaugh extacly我的觀點 – MrFoh

回答

2

你可以試試這個,這將匹配即使工作還有其他的查詢字符串或哈希IDS:

if(window.location.href.indexOf(url) > -1) 
+2

儘管對於給定的例子這可能沒有問題,但使用這種類型的方法來匹配url並不是最佳做法。例如,這也會將查詢與「/ path/to/whatever?url = http:// locahost/pheedbak/users/home」相匹配,並且如果使用相對路徑,匹配關閉在一起。最好儘可能精確。當然,正如在他的例子中,這是不太可能真的發生..但這是最好的做法。防止墨菲法則。 – Naatan

3

這應該工作 - 只能看東西#

前210
if(window.location.href.split("#")[0] == url) 

if(window.location.href.split("#",1)[0] == url) 

NB。未經測試 - 可能包含拼寫錯誤/錯誤。

2

您需要刪除重要部分。例如

var url = 'pheedbak/users/home'; 

if(window.location.href.replace(/.*?\/\/.*?\/(.*?)(?:\#|\?).*/,'$1') == url) 
{ 
    pheeds.LoadLatestPheeds(); 
} 

這也將包含GET變量URL的工作(如/用戶/家?ID = 2)和作品無論域或協議。

域&協議版本相關:

var url = 'http://localhost/pheedbak/users/home'; 

if(window.location.href.replace(/(.*?)(?:\#|\?).*/,'$1') == url) 
{ 
    pheeds.LoadLatestPheeds(); 
}