使用history.js面对后退按钮单击事件的问题

时间:2015-01-02 05:55:51

标签: javascript jquery ajax history.js

我使用history.js(使用pushState方法)在ajax调用上实现了State Aware URL。现在,当我点击任何浏览器的后退按钮时,它应该使用我的ajax方法加载以前状态的内容。为此,我做了以下操作:

$(function () {
    // history.js 
    History.Adapter.bind(window, 'statechange', function () {
        var State = History.getState();
        callAjax(State.data.loadUrl);
    });
});

但是这段代码会在每次状态更改以及前进/后退时执行。我只想在任何浏览器的前进/后退事件上执行它。我该怎么做才能得到这个?

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

我做了以下事情:

$(function () {
// history.js
History.Adapter.bind(window, 'statechange', function () {
    if (manualStateChange == true) {
        var State = History.getState();
        callAjax(State.data.loadUrl);
    }
    manualStateChange = true;
});});

当我更改URL的satate时,我设置了值:

  

manualStateChange = false;

如果我在jquery函数中为manualStateChange设置了true值,那么在每次状态更改时它都会调用该函数。这就是我从代码中删除该行的原因,它对我有用。