如何通过浏览器后退按钮处理用户到达页面?

时间:2011-08-11 15:30:58

标签: javascript jquery asp.net

  1. 用户访问页面A并点击几次,随时调整页面状态。
  2. 页面A最终将用户重定向到第B页
  3. 用户点击浏览器后退按钮,再次在浏览器中看到Page A
  4. 我需要在第3步执行一些界面清理。

    如何在页面A中捕获此事件?

3 个答案:

答案 0 :(得分:2)

我将做一些假设,提出一种不完全依赖于javascript的方法:

  1. 您在评论中注意到另一个答案是这是一个ASP.NET应用程序。我将假设您只关心从ASP.NET应用程序中的另一个页面按下它的后退按钮。
  2. 您可以控制在ASP.NET代码隐藏中执行的服务器端代码,以查看相关页面以及需要“退回”的页面。
  3. 如果这两个条件都成立,那么您应该可以使用Session variable!只需将当前页面设置为由所有相关页面上的会话维护的currPage变量。然后在加载页面时,检查并使用它来调整页面直接显示的方式,或者将值写入隐藏字段/ input / div,javascript可以读取并用于做出适当的反应。

    如果您使用JS-read-and-execute路由,则需要进行测试以确保在从后退加载按钮后在所有浏览器上正常触发事件。如the link from Rionmonster中所述,有时onload事件可能不会在后退按钮后触发。如果您从中看到问题,那么请使用那里提到的技巧来解决它。

    这种类型的解决方案适用于任何使用能够与Session变量交互的服务器端代码的Web应用程序(例如,它也适用于PHP,Python和许多其他变量)。

    注意:这可能不会像听起来那么优雅。在很多情况下,按下后退按钮后,浏览器实际上可能无法从服务器中提取新页面。如果测试显示这是一个问题,您可能需要使用一些AJAX技术在按下后退按钮后将新信息填充到JS中。

答案 1 :(得分:1)

除了可能设置cookie之外,由于浏览器安全限制,您不能这样做。解决方法是检查用户是否通过onbeforeunload或onunload fire导航离开页面。

答案 2 :(得分:1)

在您的场景中是否可以使用URL哈希导航到页面B并使用AJAX和jQuery加载新页面?因此,浏览器实际上并没有离开页面。当用户导航回来时,他们所做的就是更改URL散列。然后,您可以捕获hashchange事件,以查看用户是否已导航回到第A页。