有没有办法覆盖后退按钮?

时间:2016-01-05 14:01:14

标签: javascript c# asp.net

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

有没有办法实现这一目标?它是否使用ASP,C#,JavaScript或jQuery无关紧要。

4 个答案:

答案 0 :(得分:3)

您可以使用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';
    });
  }
});

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

我没有找到防止它的解决方案,但你可以检测到它并将它发回到你来自java的地方。

将此信息放在您不希望他们回来的页面中

<script type="text/javascript">

     function preventBack() { window.history.forward(); }

     setTimeout("preventBack()", 0);

     window.onunload = function () { null };

</script> 

答案 3 :(得分:0)

与某些MV *框架一样,(在单页应用中)他们使用location.pushState用于&gt; = IE10 浏览器,而window.onhashchange用于其他人用于监听哈希更改

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