如何使用JavaScript阻止浏览器的退格按钮的默认历史记录返回操作?

Tow*_*wer 6 javascript events

当用户在浏览器上按退格键时,有没有办法阻止默认操作发生?我不需要阻止用户离开,只需要进行默认的退格操作.我需要退格键做一些不同的事情(这是一场游戏).

我尝试没有成功:

window.addEventListener('keydown', function(e) {
    if (e.keyCode === Game.Key.BACK_SPACE)
    {
        e.preventDefault();
        e.stopPropagation();
        return false;
    }
}, false);
Run Code Online (Sandbox Code Playgroud)

如果我在if内部发出警报,则会显示退格键按下警报.所以,keyCode是正确的.

编辑:这必须适用于Opera 10.6,Firefox 4,Chrome 6,IE 9和Safari 5.

Tim*_*own 12

你不需要return falsee.stopPropagation(); 对于附属的听众来说,两者都不会有任何区别addEventListener.您的代码在Opera中不起作用,Opera只允许您禁止keypress事件中的默认浏览器行为,或IE <= 8,这不支持addEventListener.以下内容适用于所有浏览器,只要您还没有keydownkeypress事件处理程序一起使用document.

编辑:它现在还过滤掉源自<input><textarea>元素的事件:

function suppressBackspace(evt) {
    evt = evt || window.event;
    var target = evt.target || evt.srcElement;

    if (evt.keyCode == 8 && !/input|textarea/i.test(target.nodeName)) {
        return false;
    }
}

document.onkeydown = suppressBackspace;
document.onkeypress = suppressBackspace;
Run Code Online (Sandbox Code Playgroud)