有没有办法提供诸如 onHistoryBack 之类的钩子?我目前正在使用 history.js
History.Adapter.bind (window, 'statechange', function () {});
但是我无法询问用户是否按下了 history.back() 或者它是否是 History.pushState() 调用的结果..有什么想法吗?
有没有办法提供诸如 onHistoryBack 之类的钩子?我目前正在使用 history.js
History.Adapter.bind (window, 'statechange', function () {});
但是我无法询问用户是否按下了 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
方法返回已保存的状态。