用于控制 ajax 负载的后退和前进按钮

Posted

技术标签:

【中文标题】用于控制 ajax 负载的后退和前进按钮【英文标题】:back and forward buttons to control ajax loads 【发布时间】:2011-04-26 00:45:52 【问题描述】:

大家好,

我正在寻找一种解决方案,让后退和前进按钮控制我的 ajax 调用历史记录。

所以,如果我进行 ajax 调用,然后按“返回”,我想重新加载原始页面。

如果我进行了一次 ajax 调用,然后又进行了一次,然后按下返回按钮,我想再次进行第一次 ajax 调用。

等等...(即如果我现在按下前进按钮,第二个 ajax coll shell 将被重做 ;-))

谢谢

更新

嗯,我用一个名为jQuery Address 的非常好的 jquery 插件解决了整个问题,而且效果很好。

问题是,我在原始网站上遇到问题。我导航到mysite.foo/step1,然后我触发了一个ajax调用,然后我登陆maysite.foo/step1#/#step2,当我现在按下后退按钮时,我的内容(第2步)留在那个网站上,我无法获得关于我原来的信息登陆页面,重新加载...

修正:我有一个数组,用于存储由 step2 索引的 ajax 调用。

step1 : id: 1, url: /ste1.php, ... ,
step2 : id: 2, url: /step2.php, ... ,...

还有一个同样设置哈希的函数调用 ajax 请求。

【问题讨论】:

这意味着您想将所有这些历史记录保存在某个地方。我认为您可以使用会话数组。您可以遍历该 array.Array 推送和弹出 那么您将如何做到这一点,以及如何捕获单击后退按钮时触发的事件? 【参考方案1】:

您应该将您的 ajax “状态”保存在文档位置哈希(即 http://page-url#ajax-state )中。

如果只修改哈希组件,浏览器不会重新加载页面,但浏览器历史记录会记录 URL 的更改。因此,当您按下返回时,您将能够根据存储在文档哈希中的信息重新播放 ajax 调用。

另请参阅此问题: Detecting Back Button/Hash Change in URL

【讨论】:

***.com/questions/1457/…有一些代码示例和参考

以上是关于用于控制 ajax 负载的后退和前进按钮的主要内容,如果未能解决你的问题,请参考以下文章

在(后退按钮、前进按钮、关闭选项卡/浏览器)上运行最后一个 Ajax 请求 [重复]

连续按下按钮时如何加快前进/后退过程

jQuery地址:证明用户正在按下前进按钮而不是后退按钮

如何用jQuery禁用浏览器的前进后退按钮

8.栈-实现浏览器的前进后退

如何使用javascript禁用后退和前进按钮