为 Ajax 应用程序启用后退/前进键事件

发布于 2024-07-14 23:55:24 字数 162 浏览 7 评论 0原文

我有一个主要在 AJAX 上运行的应用程序。 不过我想要其中有导航功能。 为了欺骗 URL,我更改了 location.hash 以生成 URL。 但如果我使用 back/fwd,只有 url 发生变化,但页面不会重新加载。 如何覆盖 hstory.back 以重新加载页面。

I have an application which works heavily on AJAX. However I want to have navigation functionalities in it. To spoof the url, I am changing the location.hash, to generate URL. But if I use back/fwd, only the url changes, but page wont reload. How can I override the hstory.back to reload the page.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

辞旧 2024-07-21 23:55:24

除了连续轮询之外,我不知道还有什么其他方法可以实现这种行为。 一个实现可能如下所示:

var lastHash = '';

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

setInterval(pollHash, 100);

I don't know of any other way than continuous polling to implement this behaviour. An implementation might look like this:

var lastHash = '';

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

setInterval(pollHash, 100);
绳情 2024-07-21 23:55:24

您无法准确捕获后面的事件,但大多数问题都已得到解决 - 这也是一件好事,这是一个困难问题。

查看真正简单的历史记录(又名 RSH),然后实施它或解决它看看它是如何工作的。

You can't exactly capture the back event, but most of these problems have been solved - and a good thing too, it's a hard problem.

Take a look at really simple history (aka RSH) and either implement it or work through it to see how it works.

能怎样 2024-07-21 23:55:24

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

总之,您可能想要查看的两个项目解释了整个 hashchange 过程并将其与 ajax 结合使用:

  • < p>jQuery 历史(使用哈希来管理页面状态并绑定到更改以更新您的页面)。

  • jQuery Ajaxy(jQuery History 的 ajax 扩展,允许完整的 ajax 网站同时完全不引人注目且可优雅地降解)。

The answer for this question will be more or less the same as my answers for these questions:

In summary, two projects that you'll probably want to look at which explain the whole hashchange process and using it with ajax are:

  • jQuery History (using hashes to manage your pages state and bind to changes to update your page).

  • jQuery Ajaxy (ajax extension for jQuery History, to allow for complete ajax websites while being completely unobtrusive and gracefully degradable).

只有影子陪我不离不弃 2024-07-21 23:55:24

balupton 的答案真的很棒。

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

The balupton answers are really great.

But you also have another jQuery Plugin to handle your ajax requests, it is address.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文