当用户在浏览器上按退格键时,有没有办法阻止默认操作发生?我不需要阻止用户离开,只需要进行默认的退格操作.我需要退格键做一些不同的事情(这是一场游戏).
我尝试没有成功:
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 false
或e.stopPropagation()
; 对于附属的听众来说,两者都不会有任何区别addEventListener
.您的代码在Opera中不起作用,Opera只允许您禁止keypress
事件中的默认浏览器行为,或IE <= 8,这不支持addEventListener
.以下内容适用于所有浏览器,只要您还没有keydown
和keypress
事件处理程序一起使用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)