Javascript 如何通过浏览器返回按钮处理用户到达页面? 用户访问页面A并点击几次,在他/她移动时调整页面状态 页面A最终将用户重定向到页面B 用户单击浏览器后退按钮,在浏览器中再次看到页面A

Javascript 如何通过浏览器返回按钮处理用户到达页面? 用户访问页面A并点击几次,在他/她移动时调整页面状态 页面A最终将用户重定向到页面B 用户单击浏览器后退按钮,在浏览器中再次看到页面A,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,我需要在步骤3中执行一些界面清理 如何在页面A中捕获此事件 除了可能设置cookie之外,由于浏览器安全性限制,您不能设置cookie。解决方法是检查用户是否通过onbeforeunload或onunload fire离开页面。在您的场景中,是否可以使用URL哈希导航到页面B,并使用AJAX和jQuery加载新页面?因此,浏览器实际上并没有离开页面。当用户返回时,他们所要做的就是更改URL哈希。然后,您可以捕获hashchange事件,查看用户是否已导航回页面A。我将做一些假设,以提供一种不完全

我需要在步骤3中执行一些界面清理


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

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

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

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

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

    如果您选择JS读取和执行路径,那么您需要进行测试,以确保在“从上一步加载”按钮之后,所有浏览器上的事件都能正确触发。如中所述,有时在按下后退按钮后可能不会触发onload事件。如果你看到了这个问题,那么就用上面提到的技巧来解决它

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


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

    这里有一篇类似的文章介绍了使用jQuery和后退按钮:Connel,我喜欢这个想法,但我认为我们的web应用程序对于这种方法来说太重了。这是DotNetNuke内的一款电子商务应用程序,带有ASP.NET Web FormsAh,但始终值得推荐!你试过@Rionmonster在帖子中提出的公认答案吗?还没有,需要一些时间来分析。看起来我是hamlin11的javascript高手。Rionmonster链接中的方法的问题在于,除了在第一页加载时,它只允许在按下back之后执行onload代码。我们需要一些只在按下“后退”按钮后才执行的东西。那么,我们来扩展一下我的解决方案。有点作弊(但是,有时候没有一个完美的解决方案!),但有一种可能是更改PageB onload的哈希标记,当按下back按钮时,您可以捕获此哈希更改,然后使用JavaScript强制浏览器再次导航回PageA。您可以在这个函数中执行任何需要执行的操作,或者如果是服务器端,您可以将查询字符串中的某些内容传递回页面A。