📅  最后修改于: 2023-12-03 15:11:25.065000             🧑  作者: Mango
在一些特殊的场景下,需要禁用浏览器的后退按钮,以避免用户误操作或者重复提交数据。
window.history.pushState
可以使用 window.history.pushState
方法模拟浏览器历史记录,从而达到禁用后退按钮的效果。
window.history.pushState(null, null, window.location.href);
window.onpopstate = function () {
window.history.pushState(null, null, window.location.href);
};
当用户点击后退按钮时,会触发 window.onpopstate
事件,我们可以在此事件中再次调用 window.history.pushState
方法来禁用后退操作。
keydown
事件另一种方法是在用户按下后退按钮时捕获 keydown
事件,并立即将其阻止掉。这种方式需要注意的是,如果用户使用的是其他方式返回上一页(比如鼠标点击浏览器中的后退按钮),则无法阻止操作。
document.addEventListener('keydown', function (event) {
if (event.keyCode === 8 && (event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA')) {
event.preventDefault();
}
});
这段代码中,我们监听了全局的keydown
事件,当用户按下后退按钮时,我们判断当前的焦点元素是否为input
或textarea
,如果不是,则通过调用event.preventDefault()
方法来阻止默认的后退操作。
以上两种方法各有优缺点,方案一适用于需要禁用整个浏览器历史记录的场景,而方案二则适用于在特定场景下禁用后退操作。选择哪种方式需要根据实际情况来决定。