【问题标题】:javascript prevent scrollingjavascript防止滚动
【发布时间】:2013-02-16 02:54:53
【问题描述】:

当我在 HTML5 游戏中使用箭头键时,我试图阻止滚动。这是一个迷宫游戏,您可以通过屏幕上的箭头键或按钮进行控制,但每当我按下“向上”或“向下”键时,它总是会滚动。我正在使用:

document.addEventListener('keydown', function(e){
    if(e.keyCode === 40) {
        down();
    } else if(e.keyCode === 38) {
        up();
    } else if(e.keyCode === 37) {
        leftclick();
    } else if(e.keyCode === 39) {
        rightclick();
    }
})

这可以用 javascript 实现吗?我希望它能够用我的鼠标滚动,但当我使用键盘上的箭头键时不能。我的游戏在http://thomaswd.com/maze。请帮忙。谢谢!

【问题讨论】:

标签: javascript html scroll


【解决方案1】:

使用e.preventDefault() 阻止正常的键操作发生。

document.addEventListener('keydown', function(e){
    if(e.keyCode === 40) {
        down();
        e.preventDefault();
    } else if(e.keyCode === 38) {
        up();
        e.preventDefault();
    } else if(e.keyCode === 37) {
        leftclick();
        e.preventDefault();
    } else if(e.keyCode === 39) {
        rightclick();
        e.preventDefault();
    }

})

【讨论】:

  • 谢谢,这在不使用按键的情况下有效,但我添加了 e.preventDefault() 并且它有效
【解决方案2】:

试试这个:

document.addEventListener('keydown', function(e) {
        if(e.keyCode > 36 && e.keyCode < 41) {
            e.preventDefault();
        }
        if (e.keyCode === 40) {
            down();
        } else if (e.keyCode === 38) {
            up();
        } else if (e.keyCode === 37) {
            leftclick();
        } else if (e.keyCode === 39) {
            rightclick();
        }
        return false;
    }, false);
}

【讨论】:

    【解决方案3】:

    尝试在末尾添加e.preventDefault();

    【讨论】:

    • 我的意思是在每个“if”语句的末尾
    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 2013-11-30
    • 1970-01-01
    • 2014-01-21
    • 2012-05-18
    • 1970-01-01
    • 2015-09-22
    相关资源
    最近更新 更多