为Ajax应用程序启用back / fwd键事件

时间:2009-03-10 11:35:36

标签: javascript javascript-events url-rewriting hashchange

我有一个适用于AJAX的应用程序。但是我想要有导航功能。为了欺骗网址,我正在更改location.hash,以生成网址。但是,如果我使用back / fwd,只有url更改,但页面不会重新加载。如何重写hstory.back以重新加载页面。

4 个答案:

答案 0 :(得分:7)

除了持续轮询以实现此行为之外,我不知道任何其他方式。实现可能如下所示:

var lastHash = '';

function pollHash() {
    if(lastHash !== location.hash) {
        lastHash = location.hash;
        // hash has changed, so do stuff:
        alert(lastHash);
    }
}

setInterval(pollHash, 100);

答案 1 :(得分:3)

你无法完全捕捉到后面的事件,但大多数问题已经解决了 - 这也是一个好事,它是一个问题。

看一下really simple history(又名RSH),然后实现它或者通过它来看看它是如何工作的。

答案 2 :(得分:1)

这个问题的答案或多或少与我对这些问题的答案相同:

总之,您可能希望查看的两个项目解释整个hashchange过程并将其与ajax一起使用:

  • jQuery History(使用哈希来管理您的网页状态并绑定到更改以更新您的网页)。

  • jQuery Ajaxy(jQuery历史记录的ajax扩展,允许完整的ajax网站,同时完全不引人注目且可以优雅地降级)。

答案 3 :(得分:0)

balupton答案非常棒。

但是你还有另一个jQuery插件来处理你的ajax请求,它是address