【问题标题】:How to detect if a Browser Back button was used to navigate to the current page via PHP如何检测是否使用浏览器后退按钮通过 PHP 导航到当前页面
【发布时间】:2021-03-19 16:45:41
【问题描述】:

如果用户通过按浏览器的后退按钮到达当前页面,PHP 中是否有可用的指示符?

这是页面的当前设置: 用户当前通过使用基于 ajax 的过滤器的搜索或类别页面浏览网站。单击过滤器时,搜索页面的结果部分会更新,并且活动过滤器会存储在会话中。

每次用户开始新的搜索或新的类别页面时,都会发送一个带有 url 的 GET 参数,这会使网站删除过滤器。

现在的问题是,当用户应用了一些过滤器,然后单击结果然后使用返回按钮时,页面会将此视为开始了新的搜索或类别(删除过滤器),因为GET 参数仍然存在。

我的想法是以某种方式检测到用户使用后退按钮导航到当前页面,并在这种特殊情况下禁用会话重置,以便用户再次看到他的过滤结果列表。如果这可以在 PHP 代码中以某种方式实现,它会为我节省大量时间。

【问题讨论】:

  • 听起来您应该在 URL 中保留过滤器设置的当前状态,以便您可以从那里读回它。关键字 HTML5 历史 API。
  • 我不会在这些场景中混合使用 ajax 和 html 事件,因为您最终会遇到这种情况。您为什么不直接捕获 history.back() 来恢复您的过滤器(已加载、未隐藏,...)并避免整个访问服务器?
  • 这是一个已经存在的应用程序,我不想重新编码整个页面。我希望在 PHP 代码中有一个快速简单的解决方案。我发现的基于 JS 的解决方案也很好地完成了这项工作。感谢您抽出宝贵时间。

标签: php back-button-control


【解决方案1】:

我最终没有为此使用 PHP。相反,我使用 Javascripts history.replaceState() 将当前 url 替换为没有此特定 GET 参数的 URL,该参数将删除过滤器。因此,在返回按钮导航的情况下,加载的 url 没有它并且仍然应用过滤器。

【讨论】:

    【解决方案2】:

    您可以试试这个,看看导航到您的页面是如何完成的。

    PerformanceNavigation.type [已弃用,但您可以通过链接查看概览]

    Up to date for navigation type

    【讨论】:

    • 谢谢。我刚刚找到了一个解决方案 - 虽然没有 PHP...
    猜你喜欢
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多