2011-08-11 36 views
8
  1. 用户访问页面A并点击几次,调整页面状态,因为他/她去。
  2. 页A最终用户重定向到网页B
  3. 用户点击浏览器的后退按钮,看到网页A又在浏览器

我需要执行的步骤3如何通过浏览器后退按钮处理用户到达页面?

如何某些接口清理在页面A中捕获这个事件?

+2

这里是一个类似的帖子,涵盖了使用jQuery和后退按钮:http://stackoverflow.com/questions/158319/cross-browser-onload-event-and-the-back-button –

回答

1

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

1

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

+0

康奈尔,我喜欢这个想法,但我认为我们的网络应用程序对于这种方法来说太重了。它是DotNetNuke内的一个电子商务应用程序,使用ASP.NET Web Forms –

+0

啊,总是值得推荐!您是否在@Rionmonster建议的帖子中尝试过接受的答案? – Connell

+0

还没有,需要一些时间来分析。它看起来很有希望 –

1

我要做出一些假设提出一个办法做到这一点,是不是JavaScript的完全依赖:

  1. 您在评论中注意到另一个答案,这是一个ASP.NET应用程序。我假设你只关心后退按钮,它在ASP.NET应用程序的另一个页面上被按下。
  2. 您可以控制ASP.NET代码中执行的服务器端代码,以查找有问题的页面和需要“退出”的页面。

如果这两个条件都是真的,那么你应该可以使用Session variable!只需将当前页面设置为由所有相关页面上的会话维护的currPage变量即可。然后,当页面加载时,请检查并使用它来调整页面直接显示的方式,或者将值写入隐藏字段/ input/div,您的javascript可以读取并使用它来做出适当的反应。

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

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

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

相关问题