2011-11-21 107 views
21

jQuery如何檢測URL的更改?如何使用jQuery檢測URL更改

例如:如果用戶轉到頁面site.com/faq/什麼也沒有顯示,但如果他去site.com/faq/#open jquery檢測到它並執行某些操作。

+1

你應該看看[jQuery的地址插件(HTTP://www.asual。 com/jquery/address /) –

+2

@Sahil我假設他希望這樣,以便他可以在頁面加載時使用它,例如打開選項卡控件中的特定選項卡。知道這是一個方便的技術。 –

回答

2

試試這個:

if (window.location.hash) { 
    // Fragment exists, do something with it 
    var fragment = window.location.hash; 
} 

僅供參考,由#指定的URL的一部分,被稱爲「片斷」

1

如果你有site.com/faq/#open一個URL,那麼你可以做

var hash = window.location.hash 

得到hash = 'open'

6

單純看window.location.hash在頁面加載:

$(document).ready(function() { 
    if(window.location.hash === "open") 
    { 
     //Show something 
    } 
}); 

或綁定到hashchange事件窗口:

$(document).ready(function() { 
    $(window).hashchange(hashchanged); 
}); 

function hashchanged() 
{ 
    //Show something 
} 
20

可以使用hashchange事件。
或集成jquery hashchange plugin

$(function(){ 

    // Bind the event. 
    $(window).hashchange(hashchanged); 

    // Trigger the event (useful on page load). 
    hashchanged(); 

}); 

function hashchanged(){ 
var hash = location.hash.replace(/^#/, ''); 
//your code 
} 
+2

另請參閱[jQuery BBQ插件](http://benalman.com/projects/jquery-bbq-plugin/),雖然這可能比OP要求更復雜。 – Blazemonger

+1

沒有像$(window).haschange這樣的事情,而問題是關於檢測URL變化沒有改變。 – OviC

+0

'$(window).haschange'屬於上面提到的插件,用OP – UnLoCo

18

嘗試這個

$(window).on('hashchange', function(e){ 
// Your Code goes here 
}); 

它的工作對我來說