我有一個骨幹應用,我想打開一個疊加,這只是一個頁面上的URL。您也可以使用不同的網頁/網址瀏覽此疊加層。所以當覆蓋層關閉時,我想將散列設置回覆蓋層打開之前的狀態。由於通過鏈接打開覆蓋,我無法從之前的狀態獲取散列。在散列發生變化後獲取最後一個散列
那麼有一種方法可以在散列發生變化時獲得前一個散列嗎?
我有一個骨幹應用,我想打開一個疊加,這只是一個頁面上的URL。您也可以使用不同的網頁/網址瀏覽此疊加層。所以當覆蓋層關閉時,我想將散列設置回覆蓋層打開之前的狀態。由於通過鏈接打開覆蓋,我無法從之前的狀態獲取散列。在散列發生變化後獲取最後一個散列
那麼有一種方法可以在散列發生變化時獲得前一個散列嗎?
該hashchange事件有一個「oldURL」字段....存儲所有的「oldURL」(或只有最後一個),並且,當你需要它時,用最後一個URL改變實際的URL。
我想出了這個小劈。當覆蓋層打開時,我存儲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);
}
}
不幸的是,這並不工作歷史極限的原因。所以,當你達到歷史長度的極限時,你會得到一個錯誤的結果。
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])
通過'window.location.replace(oldUrl)'保存'oldUrl'並返回到原來的位置是要走的路。謝謝。 – 2012-07-19 07:31:39