我正在使用将一些数据以隐藏形式存储的技巧,以便能够持久保存它,以便当用户离开页面然后使用 BACK 按钮返回时,我可以将数据恢复到页面而无需再次访问服务器...
但是,这个技巧意味着当用户单击刷新或重新加载时会发生同样的事情......(甚至在 Firefox 中是 shift-reload)。我想检测到用户正在单击重新加载而不是单击后退按钮,以便我可以在重新加载时重新开始,但在用户导航离开和返回时仍然恢复以前的数据。
有没有办法做到这一点?我一直在调查 onbeforeunload 事件等,但还没有弄清楚任何事情。
编辑以解决乔希的“为什么?”的问题:
该页面是一个带有一堆 AJAX 过滤器的搜索结果页面。用户可能会花费相当长的时间来调整过滤器以获得他们想要的搜索结果集......然后如果他们点击离开页面或在 URL 栏中输入新地址......然后返回页面,如果我不做这样的事情,他们将不得不重新开始并再次进行所有过滤。对于我们为可用性测试带来的用户来说,这是一次非常令人沮丧的体验。
这是精通技术的用户可能通过打开新标签而不是单击/键入来解决的问题,但不幸的是,我们的绝大多数用户并不精通技术,因此显而易见的解决方案是让页面恢复当用户导航回页面时过滤器/结果。
另一方面,我可以想到用户可能重新加载页面的两个原因:
- 搜索页面上的结果中包含时间敏感元素,用户可能希望获得更多最新的结果。
- 有时可能会出现页面未正确加载的错误。在这两种情况下,如果我将页面恢复到保存状态,他们将获得相同的(旧的和/或损坏的)结果,而不是他们期望的新鲜/固定结果。
希望清除它。