【问题标题】:Is there any way to override back button?有没有办法覆盖后退按钮?
【发布时间】:2016-01-05 14:01:14
【问题描述】:

我想覆盖浏览器中的后退按钮,例如,如果用户从 A.aspx 转到 B.aspx,当他尝试从 B.aspx 返回时,它应该转到 Home.aspx 而不是 A。 aspx.

有没有办法做到这一点?不管是使用 ASP、C#、JavaScript 还是 jQuery。

【问题讨论】:

  • 如果这可以实现,那也只能通过 JavaScript。
  • 这也可以在服务器上使用会话来完成

标签: javascript c# asp.net


【解决方案1】:

您可以使用 JQuery 来捕获浏览器返回 (popstate) 事件。

$(document).ready(function () {
  if (window.history && window.history.pushState) {
    window.history.pushState('forward', null, null);
    $(window).on('popstate', function () {
      window.location.href = 'http://stackoverflow.com';
    });
  }
});

【讨论】:

    【解决方案2】:

    跟踪用户 ASP.NET 会话中的最后一页。这可以在 C# 中通过在加载 aspx 页面时在会话上设置“最后一页”来完成。加载 ASP.NET A.aspx 时,请在设置之前检查会话中的最后一页。如果是 B,则重定向到主页。

    在 ASP.NET Web 窗体中使用会话状态的指南:https://msdn.microsoft.com/en-us/library/ms178581.aspx

    【讨论】:

      【解决方案3】:

      我没有找到阻止它的解决方案,但您可以检测到它并使用 JS 将它们发送回它们的来源。

      将其放在您不希望他们返回的页面上

      <script type="text/javascript">
      
           function preventBack() { window.history.forward(); }
      
           setTimeout("preventBack()", 0);
      
           window.onunload = function () { null };
           
      </script> 
      

      【讨论】:

        【解决方案4】:

        像一些 MV* 框架一样,(在单页应用中)它们使用 location.pushState 用于 >=IE10 浏览器,而 window.onhashchange 用于其他人监听哈希变化。

        所以你可以通过监听哈希变化来监听返回按钮。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-02
          • 2010-09-13
          • 1970-01-01
          相关资源
          最近更新 更多