我有一个应用程序,它在AJAX上工作得非常重。但是我想要其中的导航功能。为了欺骗URL,我改变了location.hash来生成URL。但是如果我使用后退/前进按钮,只有URL会更改,而页面不会重新加载。如何覆盖history.back
以重新加载页面。
我有一个应用程序,它在AJAX上工作得非常重。但是我想要其中的导航功能。为了欺骗URL,我改变了location.hash来生成URL。但是如果我使用后退/前进按钮,只有URL会更改,而页面不会重新加载。如何覆盖history.back
以重新加载页面。
我不知道除了持续轮询之外还有其他的实现方式。一个实现可能看起来像这样:
var lastHash = '';
function pollHash() {
if(lastHash !== location.hash) {
lastHash = location.hash;
// hash has changed, so do stuff:
alert(lastHash);
}
}
setInterval(pollHash, 100);
您无法完全捕捉返回事件,但大多数这些问题已经得到解决 - 这是一件好事,因为这是一个难题。
请查看 really simple history(也称为RSH),然后实现它或通过它来了解其工作原理。
这个问题的答案与以下问题的答案基本相同:
总之,您可能想要查看两个项目,它们解释了整个hashchange过程并将其与ajax一起使用:
jQuery History(使用哈希管理页面状态并绑定更改以更新页面)。
jQuery Ajaxy(jQuery History的ajax扩展,允许完全的ajax网站,同时完全不显眼且优雅降级)。