2012-07-18 73 views
0

我有一個骨幹應用,我想打開一個疊加,這只是一個頁面上的URL。您也可以使用不同的網頁/網址瀏覽此疊加層。所以當覆蓋層關閉時,我想將散列設置回覆蓋層打開之前的狀態。由於通過鏈接打開覆蓋,我無法從之前的狀態獲取散列。在散列發生變化後獲取最後一個散列

那麼有一種方法可以在散列發生變化時獲得前一個散列嗎?

回答

1

該hashchange事件有一個「oldURL」字段....存儲所有的「oldURL」(或只有最後一個),並且,當你需要它時,用最後一個URL改變實際的URL。

來源:https://developer.mozilla.org/en/DOM/window.onhashchange

+0

通過'window.location.replace(oldUrl)'保存'oldUrl'並返回到原來的位置是要走的路。謝謝。 – 2012-07-19 07:31:39

0

我想出了這個小劈。當覆蓋層打開時,我存儲window.history.length。當疊加關閉我打電話window.history.go與存儲的長度與實際之間的差異,減去1

var appStateActions = { 
    overlayPre: function(){ 
    this.historyPosition = window.history.length; 
    }, 
    overlayExit: function(){ 
    window.history.go(this.historyPosition - window.history.length -1); 
    } 
} 

不幸的是,這並不工作歷史極限的原因。所以,當你達到歷史長度的極限時,你會得到一個錯誤的結果。

-1
var historyurl =[]; 

$(window).on('hashchange', function(e){ 
    historyurl.push(location.hash); 
    if(historyurl.length > 2){ 
     historyurl.splice(0,historyurl.length-2) 
    }; 
}); 

console.log("Last Hah Url ="+historyurl[0])