历史回到JavaScript的钩子

时间:2012-05-22 14:00:20

标签: javascript jquery history.js

有没有办法提供一个钩子,比如onHistoryBack?我目前正在使用带有

的hi​​story.js
History.Adapter.bind (window, 'statechange', function () {});

但我无法询问用户是否提供了history.back()或者是否是History.pushState()调用的结果..任何想法?

2 个答案:

答案 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方法返回已保存的状态。