JavaScript - 如何判断用户是否刚回到上一页

JavaScript - How to tell if the user has just returned to the previous page

我有一个两页的用户流程。当用户通过 ajax 提交第一页时,它会将值保存到会话中。如果用户在他们的浏览器中返回,第一页 UI 将使用会话值 JavaScript 重新加载到其之前的状态。

但是,也可以通过查询字符串参数预填充首页。如果存在查询字符串参数,则需要忽略任何现有会话,否则用户将永远无法通过新链接访问到预先填充了一组新值的第一页(它将始终只是用与他们上一节的相同)。

仅当他们完成第 2 页时,会话才会被清除。

我有一个问题。如果用户转到第二页,然后通过他们的浏览器历史记录、后退按钮等返回,我们可以假设他们确实希望看到包含当前会话值的前一页,而不是重置第一页到他们最初来到第 1 页时查询字符串中的任何内容。

在这里理清逻辑:

Page 1

Does user have existing session?
     |
    No ---- Is query string present?
     |           |
     |          No  ---- Load default view
     |           |
     |          Yes ---- Load from query string
     |
     |
    Yes --- Is query string present?
                 |
                No  ---- Load from session
                 |
                Yes ---- Did user just come directly back from Page 2?
                             |
                            No  ---- Load from query string
                             |
                            Yes ---- Load from session

这是这里的最后一块,我不确定如何以整洁的方式完成。我知道我可以通过记录站点上的每个页面请求并检查前一个是否是第 2 页来解决这个问题,但我想知道是否有更简单的方法,开销更少,只需使用 JavaScript.

当用户到达第 1 页时,您可以使用历史记录 API 替换当前位置条目 - 使用第 1 页的无查询字符串 URL。

如果他们随后从第 2 页返回,它应该加载没有任何 GET 参数的第 1 页。