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