我尝试对各种 jquery 历史记录插件进行一些研究,但我找不到任何适合我情况的示例,所以我开始认为也许我想做的事情是不可能的。
我们有一个非常复杂的搜索页面,通过 ajax 进行更新。用户使用大量选项进行搜索,然后返回一个结果列表,可以对其进行排序、分页等。然后,如果他们单击其中一个结果,系统会将他们导航到另一页面以查看详细信息。但是,如果他们单击“返回”,则不会返回到所有 ajax 和 javascript 更新后页面的显示方式。他们看到的搜索页面没有任何结果。
我希望在他们离开之前我可以通过添加哈希来提取某些内容,或者使用 jquery 历史记录插件之一来实现类似的功能,这样当他们单击“返回”时,就不会重新加载 搜索页面,但只会向他们显示缓存版本(当他们单击其中一个结果时最后的外观)。
据我所知,我发现的 ajax 和后退按钮的大多数示例都使用散列值来告诉页面如何自行排列,甚至允许为包含散列的页面添加书签。我认为对我来说,这意味着我基本上必须将搜索页面中的所有内容序列化为哈希值,这似乎不实用,除非我完全误解了它的工作原理。
有人知道这是否可行吗?
最佳答案
有至少两种方法可以实现您想要的功能:
- “经典”- 将所有用户搜索选项存储在 cookie 或 session 中,例如“上次搜索”。因此,当用户在 session 期间导航到搜索页面时,您可以读取 cookie/ session 并使用该选项显示最后的搜索结果。
- “现代”方式 - 使用 HTML5 history API - 在每个搜索上形成一个搜索选项对象,并通过history.pushState将其推送 - 当用户导航到其他页面然后按“后退”时,浏览器将使用此状态来执行搜索。
关于javascript - 单击浏览器后退按钮返回到 ajax 页面并使其看起来相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21411943/