有没有办法提供一个钩子,比如onHistoryBack?我目前正在使用带有
的history.jsHistory.Adapter.bind (window, 'statechange', function () {});
但我无法询问用户是否提供了history.back()或者是否是History.pushState()调用的结果..任何想法?
答案 0 :(得分:2)
我这样做的方法是在实际网站上的每次点击时将变量设置为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;
});
希望有所帮助:)
答案 1 :(得分:1)
所有状态都存储在History.savedStates
中。每次推回时都会添加另一个状态。理论上,您可以测试History.savedStates
以查看是否History.savedStates[History.savedStates.length - 2] == currentState
。这表明用户从步骤a前往步骤b,返回步骤a。但是,用户可以使用其他方式而不是后退按钮 - 因此您可能需要将其与用户事件结合使用。
您还可以使用History.getStateByIndex
方法返回已保存的状态。