如何在单击浏览器后退按钮时维护页面状态
How to maintain the page state when browser back button is clicked?
我有一个带有客户端分页和过滤的页面。该页面列出了大约 200-300 个产品。该页面包含一些过滤器,如类别,制造商和重量。单击任何页码或过滤器,我正在使用Jquery在客户端处理页面内容。
在这一步之前,一切都很好。现在有一个用例,我遇到了问题。
- 假设用户来到我们的产品列表页面并单击一些过滤器并获取产品列表。
- 现在他点击一个 特定产品 ,这会将他重定向到产品页面以查看产品的详细信息。
- 但是现在当用户单击后退按钮时,用户将获得具有初始状态的页面,而无需选择任何过滤器。
用户可以通过任何方法获得带有先前在单击后退按钮时选择的过滤器的页面?
您可以使用以下某些方法跨多个页面存储数据。
- 将数据存储在 Cookie 中。
- 将数据存储在本地存储中。
- 将数据存储在服务器上的会话中。
- 将数据设为 URL 的一部分(对筛选器参数使用哈希或查询字符串)。请注意,更改查询字符串会导致页面重新加载。
如果使用 Cookie、本地存储或哈希,则需要将 JavaScript 代码添加到页面,以便在页面加载时加载和应用存储的数据。
有许多方法可以做到这一点:
- 如果您正在处理 html5 历史记录和单页应用程序,那么您不会重新加载页面。但根据你的问题,我认为这不是你要处理的。
- 在 URL 中存储某些内容。例如,请查看 TotalHockey 上的过滤器,例如 http://www.totalhockey.com/Search.aspx?category_2=Sticks%2fComposite%20Sticks&chan_id=1&div_main_desc=Intermediate&category_1=Sticks 当您向后移动时,URL 包含整个状态。
- 使用本地存储(如果您有支持它的浏览器)。
- 将 Cookie 与 $.cookie API 结合使用
- 将其存储在服务器的会话上。
您可以在提交
过滤器输入和每个 ajax 请求(加载产品列表)后立即将搜索过滤器数据存储在会话中,您可以检查存储在会话中的搜索过滤器输入并根据它们显示数据。如果搜索会话为空,则显示整个列表。
您还可以在搜索记录后将完整的 ajax 请求 URL(如果使用 GET 方法)存储在会话中,并在从产品详细信息页面返回后再次点击该特定 URL。
相关文章:
- AngularJS:使用ng-show/hide动态维护下拉列表的3种状态(InProgress、Success、Err
- 在异步函数中维护变量的状态
- php维护状态
- 维护手动页面刷新时通过AJAX加载的状态/内容
- 谷歌图表LineGraph切换数据表和维护状态
- 如何在React应用程序中处理权限检查(Redux中的状态维护)
- 如何在React.js中维护页面刷新后的状态
- 如何在 Collapse Jquery 中维护状态
- 如何在禁用 JavaScript 的情况下维护下拉列表的持久性状态 - PHP
- 我是否必须在 React 中使用 this.state 来维护组件状态
- 维护登录状态 om chrome 打包应用程序
- 如何在路由更改之间维护视图(控制器)状态
- 在 JavaScript DOJO 中维护对象状态
- 如何在浏览器 JavaScript 中维护来自同一站点的不同页面加载的状态
- jQuery插件如何维护全局状态
- 如何在单击浏览器后退按钮时维护页面状态
- 如何引用Angular Service返回的数组,以便维护状态
- 用于在纯客户端测试应用程序(javascript/jquery)中维护状态和管理i/o的体系结构
- AngularJS使用浏览器的URL历史维护状态
- 在jquery插件中维护状态