【问题标题】:How to prevent browser's back button click? [closed]如何防止浏览器的后退按钮点击? [关闭]
【发布时间】:2012-11-21 08:50:17
【问题描述】:

我不想通过浏览器的后退按钮返回我的历史页面。我怎么能做到这一点?

【问题讨论】:

  • 不能也不应该这样做。
  • 您几乎可以肯定解决了错误问题。如果不适当的页面最终出现在历史记录中,请寻求解决那个问题。
  • 可以在一定程度上做到...你可以用JS从浏览器的历史记录中删除你不希望用户返回的条目(假设你想阻止用户返回到特定页面)。但绝对不应该这样做。不要这样做!
  • 请不要触碰用户预期的行为。
  • 我的用户体验专家会因为说出这样一句话而当场杀了我......请听ahren

标签: c# javascript jquery


【解决方案1】:

您可以使用 HTML5 历史 API 禁用它。有 Jordan Hollinger 的great article about this

【讨论】:

    【解决方案2】:

    我同意 Damien 的观点,即您解决了错误的问题。我为此写了一篇博文

    作为 Web 开发人员,您可以完全控制自己的服务器代码,但只有 在脚本方面对客户端的控制有限。你甚至不能 保证客户端将具有任何脚本功能(用户 可能会禁用脚本,直到他们信任您的站点),所以 你不应该从客户的角度设计你的网站行为 透视图 - 即尝试禁用浏览器的后退按钮。
    相反,如果您需要实现行为,以便在注销时 用户单击后退按钮,他们将被重定向到登录页面,您 需要设计您的网站,以便发生这种情况。 您的服务器端 设计应该推动客户行为

    完整的博文在这里 - http://www.dylanmorley.com/blog/post/Web-Development-Disabling-the-back-button.aspx

    虽然您可以使用 javascript 实现所需的结果,但您不能保证所有设备在所有模式下的一致行为(例如 - 禁用脚本的移动浏览)

    正确设计您的服务器端代码将导致正确的客户端行为,而不会破坏后退按钮的预期行为,无论是否启用脚本。

    【讨论】:

      【解决方案3】:

      你可以这样做,但正如 @Ahren 所说,你不应该这样做。

      您只需要开发 SPA(单页应用程序)。 在这种情况下,您将只有对 Web 服务器的异步请求,并且您的页面将被部分更新。 据我了解,您正在使用 asp.net 进行开发。 所以你可以在asp.net官方网站上了解如何做:Samples: A Tour through SPA

      【讨论】:

      • 如果用户在另一个窗口中打开页面怎么办;然后在原始页面中执行 smth,这将导致保存在单独窗口中的原始页面不一致。然后用户拿走那个单独的页面并再次尝试做某事......我猜SPA并不是为了解决这个问题。这根本不是问题。简单地说,Web 应用程序应该能够准备好从“过时”页面获取请求。我说的不对吗?
      • 好吧,它根本无法解决不一致问题,因为它在 Web 环境中是不可能的,而 SPA 只会产生历史问题,因为在通常情况下,开发人员需要自己模拟历史步骤。我刚刚展示了一种如何在没有任何历史记录的情况下构建 Web 应用程序的方法。我也不喜欢那种应用)
      • 这个不得不提,IMO))
      【解决方案4】:

      你可以让你的缓存过期,你可以实现这个功能。

      Response.Cache.SetExpires(DateTime.Now.AddDays(-1));
      Response.Cache.SetCacheability(HttpCacheability.NoCache);
      

      【讨论】:

        【解决方案5】:

        您的意思是从网站注销后?如果是这样,我认为这会对您有所帮助:link

        【讨论】:

        • 没有。我不想通过浏览器的后退按钮返回。有可能吗?
        • 如果可以单击单个按钮,那么您可以为页面中的所有按钮和页面加载事件后提供这些设置,这样就根本不可能。有些网站会阻止您返回,这可能不会显示您的历史记录。有点棘手,但肯定会奏效。
        猜你喜欢
        • 2011-10-15
        • 2013-01-11
        • 1970-01-01
        • 2015-10-22
        • 1970-01-01
        • 2017-04-23
        • 1970-01-01
        • 2015-09-28
        • 2011-08-30
        相关资源
        最近更新 更多