history.js如何触发statechange以外的动作?

时间:2013-11-28 13:25:30

标签: jquery ajax history.js

我有一个ajax脚本,它使用在状态发生变化时调用函数的history.js:

History.Adapter.bind(window,'statechange',function() {
    var State = History.getState();
    if (State.url.split('/').pop() === "home") {
        home();
    }
});

当浏览器中的历史记录更改为home时,将调用home()函数,这是完美的。

然后捕捉我的链接:

$('a').click(function(evt) {
    evt.preventDefault();
    History.pushState("", $(this).text(), $(this).attr('href'));

});

当我从另一个功能导航到家时,家庭正常加载,但是当我再次点击主页链接时,当我希望再次加载时没有任何反应。我理解,因为状态没有变化,所以什么都不应该发生。 但是,如何通过单击其链接来触发该home()函数的加载,而不会激发更改状态,从而重新加载?

(提示:我的js级别接近0:)

1 个答案:

答案 0 :(得分:0)

我没有找到绑定到'无变化'状态的方法所以我所做的是在捕获点击时我检查链接的url是否与当前url相同。这很难看,但现在它有效。

if ($(this).attr('href') === History.getState().url.split('/').pop()) {
    ...
}