Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML页面按键向下滚动_Javascript_Html_Keyboard - Fatal编程技术网

Javascript HTML页面按键向下滚动

Javascript HTML页面按键向下滚动,javascript,html,keyboard,Javascript,Html,Keyboard,我有一个游戏,玩家可以使用箭头键移动,当我按下向上或向下箭头时,屏幕也会移动。有没有办法禁用此功能 我正在使用以下命令: 本地HTML页面,谷歌浏览器,Windows (仅供参考-整个页面不会一次显示) 这是我的密码: function moveCharacter() { // left arrow if (keys[37]) { move("left"); } // up arrow if (keys[38]) {

我有一个游戏,玩家可以使用箭头键移动,当我按下向上或向下箭头时,屏幕也会移动。有没有办法禁用此功能

我正在使用以下命令: 本地HTML页面,谷歌浏览器,Windows

(仅供参考-整个页面不会一次显示)

这是我的密码:

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和大括号:)(请参阅我问题的答案部分)当然。但是,如果除了箭头或文本输入之外还有其他键,则它们将丢失。这就是为什么只对箭头进行严格检查的原因。