如何使用javascript禁用浏览器中的后退按钮

A B*_*ner 36 javascript

想要禁用网站的后退按钮

每当用户点击浏览器后退按钮时,它就不能进入他之前访问过的页面.

Sha*_*rma 248

history.pushState(null, null, document.title);
window.addEventListener('popstate', function () {
    history.pushState(null, null, document.title);
});
Run Code Online (Sandbox Code Playgroud)

此脚本将覆盖尝试使用当前页面的状态来回导航.


更新:

一些用户报告使用document.URL而不是使用以下更好的成功document.title:

history.pushState(null, null, document.URL);
window.addEventListener('popstate', function () {
    history.pushState(null, null, document.URL);
});
Run Code Online (Sandbox Code Playgroud)

  • @Mckenzie由于history.pushState(null,null,document.title)而更改了URL; 声明.它将页面的标题放在URL中,这会导致刷新时出现崩溃.您可以将**document.title**替换为您的页面URL.这将解决您的问题.在downvoting之前请尝试理解代码.这是我到目前为止找到的最好的解决方案之一. (10认同)
  • Downvoting:因为它更改了URL以及由于哪个站点在刷新时崩溃. (6认同)
  • 正如@ArjunAjith建议的那样,我用`document.url`替换`document.title`并且它正在工作.这个答案+1. (2认同)
  • 需要注意的是,这不会禁用长按后退按钮。这表现正常,让你回到历史。 (2认同)
  • 它应该是`history.pushState(null, document.title, location.href); window.addEventListener('popstate', function (event) { history.pushState(null, document.title, location.href); });` 参考:/sf/answers/2403633221/ (2认同)

Jok*_*e10 21

一个人无法禁用浏览器后退按钮功能,只有可以做的事情是阻止他们.

JavaScript代码下面需要放在页面的head部分,您不希望用户使用后退按钮重新访问:

<script>
  function preventBack(){window.history.forward();}
  setTimeout("preventBack()", 0);
  window.onunload=function(){null};
</script>
Run Code Online (Sandbox Code Playgroud)

假设有两个页面Page1.php,Page2.phpPage1.php重定向到Page2.php.

因此,为了防止用户Page1.php使用后退按钮访问,您需要将上述脚本放在Page1.php.

有关更多信息:参考

  • 参考代码在 Chrome 中不起作用。 (2认同)

gee*_*vee -39

你不能,也不应该。

所有其他方法/替代方案只会导致非常糟糕的用户参与度。

这是我的意见。

  • 假设您正在参加在线考试,那么这就有点意义了。 (57认同)
  • 我认为警报和确认会更好 (4认同)
  • 在某些情况下是需要的。如果您正在显示 Web 视图,并且可以控制浏览器历史记录,您可能希望在某个时刻禁用后退按钮。考虑一下您在网络视图中订购某些东西的情况,如果您不禁用返回,您可能会不必要地重复订购相同的东西。 (4认同)
  • 最实际的例子是,为什么您**应该**能够执行此操作,当单击 Firefox 中的“后退”按钮时,并且您打开了一个进行了历史更改的 iframe,则该 iframe 将返回,而不是整个页面。这简直就是牛啊 (3认同)