首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >HTML页面按keydown滚动

HTML页面按keydown滚动
EN

Stack Overflow用户
提问于 2015-05-26 08:00:01
回答 1查看 2K关注 0票数 1

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

我使用的是:本地HTML页面,Google Chrome,Windows

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

下面是我的代码:

代码语言:javascript
复制
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;
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-26 08:24:36

发生这种情况的原因是,在您观察到箭头键按下后,默认操作会继续发生-滚动屏幕。这个

代码语言:javascript
复制
event.preventDefault()

方法会阻止事件的默认操作发生。

现在,您只想阻止箭头键的默认操作,而不是所有的键,否则您将失去其他键事件或功能,例如,在输入字段中键入。下面的代码封装了这个想法。

代码语言:javascript
复制
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);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30447487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档