【问题标题】:How do I handle user arrival-at-page via browser-back-button?如何通过浏览器后退按钮处理用户到达页面?
【发布时间】:2011-10-25 02:41:53
【问题描述】:
  1. 用户访问页面 A 并点击了几下,随着他/她调整页面状态。
  2. 页面 A 最终将用户重定向到页面 B
  3. 用户单击浏览器返回按钮,在浏览器中再次看到页面 A

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

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

【问题讨论】:

标签: javascript jquery asp.net


【解决方案1】:

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

  1. 您在 cmets 中注意到另一个答案,这是一个 ASP.NET 应用程序。我将假设您只关心从 ASP.NET 应用程序的另一个页面按下后退按钮的位置。
  2. 您可以控制在 ASP.NET 代码隐藏中执行的服务器端代码,用于相关页面和需要“退出”的页面。

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

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

这种类型的解决方案应该适用于任何使用能够与 Session 变量交互的服务器端代码的网络应用程序(例如,它也适用于 PHP、Python 等)。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • Connel,我喜欢这个想法,但我认为我们的 Web 应用程序对于这种方法来说太重了。它是 DotNetNuke 中带有 ASP.NET Web 表单的电子商务应用程序
    • 啊,总是值得建议!您是否尝试过@Rionmonster 建议的帖子中接受的答案?
    • 还没有,需要时间分析。看起来很有希望
    • 我是 hamlin11 的 javascript-adept 同事。 Rionmonster 链接中的方法的问题在于,除了在第一页加载之外,它只是让 onload 代码在按下返回后执行。我们需要在按下后退按钮时执行的东西。
    • 那么请扩展我的解决方案。有点作弊(但是,嘿,有时没有完美的解决方案!),但有一种可能性是更改页面 B onload 的哈希标记,当按下后退按钮时,您可以捕获此哈希更改,然后强制浏览器使用 JavaScript 再次导航回页面 A。您可以在此函数中执行您需要执行的任何操作,或者如果它是服务器端,您可以将查询字符串中的某些内容传回页面 A。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-10
      • 2023-02-23
      • 2018-06-02
      • 1970-01-01
      • 2013-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多