2010-09-03 149 views
1

所以我看到很多人推薦的hidden- iFrame黑客是jQuery history plugin但我真正需要的是這種技術的另一半:如何添加瀏覽器歷史記錄狀態?

function whenItemIsClicked() 
    { 
    window.location.hash = this.id; 
    //some other stuff, like Ajax 
    } 

//and then, if page is reloaded... 
$(document).ready(function(){ 
    var loc = window.location.hash; 
    //if there happens to be a hash, navigate to corresponding content 
    if(loc != '') $(loc).click(); 
}); 

這兩項工作的偉大。現在,我想附加這兩行

var loc = window.location.hash; 
    if(loc != '') $(loc).click(); 

給一個事件,但似乎沒有一個將會一直被後退按鈕觸發。有沒有辦法添加一個瀏覽器歷史狀態,將保存當前的URL,以便上述技術將工作?

回答

2

有一個事件叫做window.onhashchange,雖然不是所有人都支持它,但是...... there's a plugin by Ben Alman解決了這個問題。

該插件通過使用window.onhashchange(本機事件)使其跨瀏覽器工作,如果它在那裏的話。如果不是,則每50ms輪詢一次,如果散列值發生變化,則觸發事件本身。使用the plugin,你的代碼應該是這樣的:

$(window).hashchange(function() { 
    var loc = window.location.hash; 
    if(loc != '') $(loc).click();  
}); 

你只需要在一個地方的代碼。你可以在document.ready之後通過觸發事件觸發一次,如上面這樣綁定:

$(function(){ 
    $(window).hashchange(); 
});