浏览器后退按钮处理

Posted

技术标签:

【中文标题】浏览器后退按钮处理【英文标题】:Browser back button handling 【发布时间】:2013-01-10 16:22:37 【问题描述】:

我正在尝试处理浏览器后退按钮事件,但找不到任何解决方案。

我想问用户他是否使用“确认框”点击浏览器后退按钮,如果他选择确定,我必须允许后退按钮操作,否则我必须停止后退按钮操作。

谁能帮我实现这个。

【问题讨论】:

***.com/questions/1589478/… 这可能已经在this thread中得到回答 您的问题要么是如何在 javascript 中实现历史按钮,要么是 TildalWave 和 Paul 提到的。 正如 TildalWave 和 Paul 提到的,但我只想处理后退按钮事件而不是页面重新加载和页面关闭事件。 research onbeforeunload, start in MDN docs 不确定你在想什么,但返回按钮会启动页面关闭事件,这就是你可以使用的全部 【参考方案1】:

如果按下后退按钮,警告/确认用户如下。

window.onbeforeunload = function()  return "Your work will be lost."; ;

您可以使用下面提到的链接获取更多信息。

Disable Back Button in Browser using JavaScript

希望对你有帮助。

【讨论】:

此方案仅适用于 IE 浏览器,不适用于 Chrome 和 Firefox 浏览器。任何人都可以提供特殊的JS脚本,以便我们可以处理所有浏览器上的后退按钮.... @BhanuprasadKunde - 当您说 onebeforeunload 仅适用于 IE 时,您错了。它适用于 IE、FF、chrome 和 Opera。检查 javascript 控制台中的实现错误。 可以确认,window.onbeforeunload 也适用于 Chrome、FF(Opera?-我不测试) 这仅适用于 Firefox,前提是您与网站进行了交互 第二个链接“Mastering_The_Back_Button_With_Javascript”好像失效了【参考方案2】:

您也可以在页面加载时添加哈希:

location.hash = "noBack";

然后只需处理位置哈希更改以添加另一个哈希:

$(window).on('hashchange', function() 
    location.hash = "noBack";
);

这使得哈希始终存在,并且后退按钮首先尝试删除哈希。然后由“hashchange”处理程序再次添加哈希 - 因此页面实际上永远不会更改为前一个。 p>

【讨论】:

小心处理 href="#id" ;)

以上是关于浏览器后退按钮处理的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter Web 中处理浏览器的后退按钮

在 React-router 中拦截/处理浏览器的后退按钮?

如何知道Firefox中是否单击了刷新按钮或浏览器后退按钮[重复]

JS监听浏览器后退事件

使用浏览器后退按钮时,我的应用程序中的标题不会改变

如何用jQuery禁用浏览器的前进后退按钮