覆盖网络浏览器的默认行为通常是一个坏主意。出于安全原因,客户端脚本没有足够的权限来执行此操作。
也有人问过类似的问题,
您实际上无法禁用浏览器后退按钮。但是,您可以使用您的逻辑来阻止用户导航回来,这会产生一种像被禁用的印象。这是如何 - 查看以下代码段。
(function (global) {
if(typeof (global) === "undefined") {
throw new Error("window is undefined");
}
var _hash = "!";
var noBackPlease = function () {
global.location.href += "#";
// Making sure we have the fruit available for juice (^__^)
global.setTimeout(function () {
global.location.href += "!";
}, 50);
};
global.onhashchange = function () {
if (global.location.hash !== _hash) {
global.location.hash = _hash;
}
};
global.onload = function () {
noBackPlease();
// Disables backspace on page except on input fields and textarea..
document.body.onkeydown = function (e) {
var elm = e.target.nodeName.toLowerCase();
if (e.which === 8 && (elm !== 'input' && elm !== 'textarea')) {
e.preventDefault();
}
// Stopping the event bubbling up the DOM tree...
e.stopPropagation();
};
}
})(window);
这是在纯 JavaScript 中编写的,因此可以在大多数浏览器中使用。它还会禁用退格键,但该键将在input
字段和textarea
.
推荐设置:
将此代码段放在单独的脚本中,并将其包含在您想要此行为的页面上。在当前设置中,它将执行onload
DOM 事件,这是此代码的理想入口点。
工作演示!
它在以下浏览器中进行了测试和验证,
- 铬合金。
- 火狐。
- Internet Explorer (8-11) 和 Edge。
- 苹果浏览器。