有沒有辦法提供諸如onHistoryBack之類的鉤子?我目前使用history.js與JavaScript上的歷史回鉤
History.Adapter.bind (window, 'statechange', function() {});
但我也沒辦法要問,如果用戶presed history.back(),或者如果它是一個History.pushState()調用..任何想法的結果呢?
有沒有辦法提供諸如onHistoryBack之類的鉤子?我目前使用history.js與JavaScript上的歷史回鉤
History.Adapter.bind (window, 'statechange', function() {});
但我也沒辦法要問,如果用戶presed history.back(),或者如果它是一個History.pushState()調用..任何想法的結果呢?
我這樣做的方式是在實際網站上每次點擊時將變量設置爲true。然後statechange事件會檢查這個變量。如果這是真的,他們已經在網站上使用了一個鏈接。如果它是錯誤的,他們點擊了瀏覽器後退按鈕。
例如:
var clicked = false;
$(document).on('click','a',function(){
clicked = true;
// Do something
});
History.Adapter.bind (window, 'statechange', function() {
if(clicked){
// Normal link
}else{
// Back button
}
clicked = false;
});
希望幫助:)
所有州都存儲在History.savedStates
。每次推回時都會添加另一個狀態。所以理論上你可以測試History.savedStates
看看History.savedStates[History.savedStates.length - 2] == currentState
。這將表明用戶從步驟a前往步驟b,返回步驟a。然而,用戶可以通過其他方式獲得除後退按鈕之外的其他方式 - 因此您可能需要將其與用戶事件結合使用。
您還可以使用History.getStateByIndex
方法返回保存的狀態。
謝謝@will我剛剛解決了使用像你這樣的方法,但是我在History.pushState(...)之間調用了「clicked」修改,以防止執行「statechange」掛鉤 –