当用户在浏览器上按退格键时,有没有办法阻止默认操作发生?我不需要阻止用户离开,只需要进行默认的退格操作.我需要退格键做一些不同的事情(这是一场游戏).
我尝试没有成功:
window.addEventListener('keydown',function(e) { if (e.keyCode === Game.Key.BACK_SPACE) { e.preventDefault(); e.stopPropagation(); return false; } },false);
如果我在if内部发出警报,则会显示退格键按下警报.所以,keyCode是正确的.
编辑:这必须适用于Opera 10.6,Firefox 4,Chrome 6,IE 9和Safari 5.
解决方法
您不需要返回false或e.stopPropagation();在使用addEventListener附加的侦听器中,两者都不会有任何区别.您的代码在Opera中不起作用,Opera只允许您禁止按键事件中的默认浏览器行为,或者IE< = 8,它不支持addEventListener.以下内容适用于所有浏览器,只要您尚未在文档上安装keydown和keypress事件处理程序即可. 编辑:它现在还过滤掉源自< 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;