2011-05-05 96 views
1

我有一個典型的ajax風格的動態內容設置:單擊鏈接,更改地址欄中的錨點並加載新內容。當用戶點擊後退按鈕時,它會循環遍歷所有錨點 - 正如預期的那樣。後退按鈕 - 跳過錨點

有沒有一種方法(使用JavaScript我假設)使後退按鈕轉到上一頁,並'忽略'所有錨點?

回答

5

COUT階段的用戶傳遞並使用

history.back(X); 
爲了回去X頁/錨

history.go(-1*X); 

1

首先,爲了確保我的理解,您已將您的AJAX書籤命名爲與DOM元素中的ID相同?如果是這樣,無論如何要撤消這個?你可以欺騙它不要失敗,但這是一個很糟糕的做法。相反,你應該有一個像#somepage和AJAX網址像#!/somepage這樣的ID這樣他們不會感到困惑。此外,像谷歌這樣的人不會知道正常的#id是散列URL,但做#!/給谷歌一個線索。

現在,如果你想用一個#!/的方法來做到這一點,你需要對舊的瀏覽器(< = IE7),但「現代」的瀏覽器IE8,FF和Chrome定時器可以使用onhashchange JS性能,如:

window.onhashchange = function(){ console.log('hash has changed') }; 

然後,如果你想支持舊瀏覽器,你需要做一些更先進的事情。你需要做的:

var currentPage = ''; 
setTimeout(function(){ 
    if(currentPage !== window.location.hash){ 
    console.log('hash has changed'); 
    currentPage = window.location.hash 
    } 
},500); 

在你需要用自己的函數觸發「改變頁面」事件來替換console.log()小號兩個例子。

要停止滾動,你可以添加:

window.onhashchange = function(){ 
    if (window.location.hash == "" || window.location.hash == "#"){ return false; } 
    //rest of your code here! 
}; 

返回false將阻止滾動。這也應該在計時器中工作。

更多信息:
https://developer.mozilla.org/en/DOM/window.onhashchange
http://msdn.microsoft.com/en-us/library/cc288209(VS.85).aspx
http://ajaxpatterns.org/Unique_URLs