Javascript HTML页面按键向下滚动
我有一个游戏,玩家可以使用箭头键移动,当我按下向上或向下箭头时,屏幕也会移动。有没有办法禁用此功能 我正在使用以下命令: 本地HTML页面,谷歌浏览器,Windows (仅供参考-整个页面不会一次显示) 这是我的密码:Javascript HTML页面按键向下滚动,javascript,html,keyboard,Javascript,Html,Keyboard,我有一个游戏,玩家可以使用箭头键移动,当我按下向上或向下箭头时,屏幕也会移动。有没有办法禁用此功能 我正在使用以下命令: 本地HTML页面,谷歌浏览器,Windows (仅供参考-整个页面不会一次显示) 这是我的密码: function moveCharacter() { // left arrow if (keys[37]) { move("left"); } // up arrow if (keys[38]) {
function moveCharacter()
{
// left arrow
if (keys[37])
{
move("left");
}
// up arrow
if (keys[38])
{
move("up");
}
// right arrow
if (keys[39])
{
move("right");
}
// down arrow
if (keys[40])
{
move("down");
}
}
document.body.addEventListener("keydown", function(e)
{
keys[e.keyCode] = true;
moveCharacter();
});
document.body.addEventListener("keyup", function(e)
{
keys[e.keyCode] = false;
});
发生这种情况的原因是,在观察箭头键按下后,默认操作继续发生-滚动屏幕。
event.preventDefault()
方法停止事件的默认操作
现在,您只想阻止箭头键的默认操作,而不是所有键,否则您将丢失其他键事件或功能,例如在输入字段中键入。下面的代码封装了这个想法
document.addEventListener("keydown", function (e) {
// Only intercept the arrow keys, not all keys
if([37,38,39,40].indexOf(e.keyCode) > -1){
e.preventDefault();
// Your code
keys[e.keyCode] = true;
moveCharacter();
}
}, false);
发生这种情况的原因是,在观察箭头键按下后,默认操作继续发生-滚动屏幕。
event.preventDefault()
方法停止事件的默认操作
现在,您只想阻止箭头键的默认操作,而不是所有键,否则您将丢失其他键事件或功能,例如在输入字段中键入。下面的代码封装了这个想法
document.addEventListener("keydown", function (e) {
// Only intercept the arrow keys, not all keys
if([37,38,39,40].indexOf(e.keyCode) > -1){
e.preventDefault();
// Your code
keys[e.keyCode] = true;
moveCharacter();
}
}, false);
谢谢-我意识到你可以使用e.preventDefault();首先,不要使用indexOf和大括号:)(请参阅我问题的答案部分)当然。但是,如果除了箭头或文本输入之外还有其他键,则它们将丢失。这就是为什么只对箭头进行严格检查的原因。谢谢-我意识到您可以使用e.preventDefault();首先,不要使用indexOf和大括号:)(请参阅我问题的答案部分)当然。但是,如果除了箭头或文本输入之外还有其他键,则它们将丢失。这就是为什么只对箭头进行严格检查的原因。