【问题标题】:Prevent browser back button to not go to previous page防止浏览器后退按钮不转到上一页
【发布时间】:2026-01-03 17:20:04
【问题描述】:

我想防止浏览器后退按钮不转到上一页。
为此,我尝试了以下代码:

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

但是当我一次连续点击浏览器后退按钮 2-3 次时,它再次重定向到上一页。所以我上面的代码失败了。
我不希望用户转到上一页。

我也试过这段代码:

<script>

    $(document).ready(function () {
        function disableBack() { window.history.forward() }

        window.onload = disableBack();
        window.onpageshow = function (evt) { if (evt.persisted) disableBack() }
    });

</script>

但此代码正在从浏览器中删除滚动条,我无法滚动页面。

请回复一些解决方案。我尝试搜索很多文章,但找不到任何解决方案。

【问题讨论】:

  • 我强烈建议考虑其他一些选项。在大多数情况下,像这样劫持后退按钮是糟糕的用户体验,这可能就是你被否决的原因。用户不应该觉得网站正在与他们作对,或“破坏”他们的浏览器。例如。如果返回会使您的应用处于不良状态,请让上一页呈现一条消息,解释原因。

标签: javascript asp.net


【解决方案1】:

试试这个

<script type="text/javascript">
        window.history.forward(1);
 </script>

或者你可以阅读this

【讨论】:

  • 对于所有解决方案,我都面临这样一个问题,即当我一次连续点击浏览器后退按钮 2-3 次时,它会再次重定向到上一页。所以我上面的代码失败了。请回复一些没有此问题的其他解决方案?
  • 我将它设置在我的页面标题中,直到现在都没有错。也许您可以保留所谓的属性(windows.unload$(document) 等)并将其设置在没有这些属性的标题中。有时简单的事情就是答案。
最近更新 更多