如何停止浏览器的热键?

问题描述:

我正在开发一个HTML5游戏,在我的游戏中您使用空格键进行拍摄。这工作得很好,直到我意识到在较小的屏幕上,空格键会滚动到页面的底部,隐藏游戏的一部分。如何停止浏览器的热键使页面向下滚动?或者我怎样才能在用户点击画布时冻结滚动。以下是本场比赛的链接:http://73.9.75.150:8886/zn/index.html如何停止浏览器的热键?

主要处理代码:

window.addEventListener("keydown", function(e){ 
    keys[e.keyCode] = true; 
}); 

window.addEventListener("keyup", function(e){ 
    keys[e.keyCode] = false; 
}); 
+1

的可能的复制[按空格键移动页面向下?](http://*.com/questions/2343573/pressing-spacebar-moves-page-down) – JJJ

+1

请出示您问题中的相关密钥处理代码。一般来说,您可能需要使用'event.preventDefault()'来停止关键事件的默认行为。 – nnnnnn

+0

@nnnnnn我添加了代码 –

您的典型事件侦听器调用看起来是这样的:

window.addEventListener("keydown", function (e) { 
    // shoot stuff 
}); 

在上面的回调e参数是一个事件对象。它有一个方法调用preventDefault(),顾名思义,它将停止事件的默认行为发生。

这是你如何使用它:

window.addEventListener("keydown", function (e) { 
    if (e.keyCode === Keys.SPACEBAR) { // pseudo-code for key detection 

     // shoot stuff 
     e.preventDefault(); 

    } 
}); 

这是一个标准功能,将在最现代的浏览器。您可能需要稍微改变一些旧版浏览器,或者使用库来为您处理跨浏览器事件问题。

+0

谢谢!有用!为我节省了很多时间。 –

可能的解决办法:

document.addEventListener('keydown', function(e){ 
    if(e.keyCode === 32){ 
    e.preventDefault(); 
    } 
}); 
+0

提高答案的好方法是解释为什么这是一个可能的解决方案。欢迎来到Stack Overflow,感谢您的贡献! – krillgar