【问题标题】:Javascript disable spacebar scrolling [duplicate]Javascript禁用空格键滚动[重复]
【发布时间】:2020-06-05 16:21:34
【问题描述】:

我正在开发一个 WebGL 应用程序,我使用空格键来移动相机。问题是,当我按下空格键时,网站也会向下滚动。有没有办法禁用此功能?

到目前为止,没有一个答案是可靠的。它们工作大约一秒钟,然后网站向下滚动一小段时间,然后循环重复。

这是我的按键代码:

window.addEventListener("keydown", (e) =>  {
    if(e.repeat) { return; }

    if(e.which == 27 || e.which == 9) {
        document.exitPointerLock();
        checkMouse = false;
    }

    if(checkMouse) {
        if(e.which == 87) { forwardPressed = true; }
        if(e.which == 83) { backwardPressed = true; }
        if(e.which == 65) { leftPressed = true; }
        if(e.which == 68) { rightPressed = true; }
        if(e.which == 32) { upPressed = true; event.stopPropagation(); event.preventDefault(); }
        if(e.which == 16) { downPressed = true; }
    }
});

如您所见,对于空格键,已经实现了一种解决方案,但到目前为止我得到的两种类型的答案都不起作用。

【问题讨论】:

  • 您需要在问题中提及您尝试了哪些解决方案以及您遇到的具体问题。否则,您将无法避免获得针对所述问题的通用解决方案。
  • 通用的、可靠的解决方案是重复的。如果它对您不起作用,则说明您有一些其他代码在干扰它。
  • if(e.repeat) { return; } event.preventDefault()。
  • ...这是一个很好的例子,为什么你应该总是在代码不起作用时展示你的代码,而不是坚持认为其他人都错了。

标签: javascript


【解决方案1】:

你可以这样做

$(document).keypress(function(event){
    var keycode = (event.keyCode ? event.keyCode : event.which);

    if(keycode == '32') {
        event.preventDefault();
    }
});

【讨论】:

  • 这不可靠。每一秒它都会向下滚动一点
【解决方案2】:

将此添加到您的 javascript:

let checkMouse = true
window.addEventListener("keydown", (e) =>  {
if(e.repeat) { 

    return; 
}

if(e.which == 27 || e.which == 9) {
    document.exitPointerLock();
    checkMouse = false;
}

if(checkMouse) {
    if(e.which == 87) { forwardPressed = true; }
    if(e.which == 83) { backwardPressed = true; }
    if(e.which == 65) { leftPressed = true; }
    if(e.which == 68) { rightPressed = true; }
    if(e.which == 32) { upPressed = true; event.stopPropagation(); event.preventDefault(); }
    if(e.which == 16) { downPressed = true; }
}
if (e.which == 32) {
    return !(e.keyCode == 32);
}
});

checkMouse 之前没有初始化。在这里工作正常。

【讨论】:

  • 正如问题下的 cmets 中已经说过的,这不能可靠地工作
  • 为我工作,一定有冲突,分享你的代码。
  • 我添加了一些代码
  • 做了一些更新。
  • 当然 checkMouse 已经初始化了
猜你喜欢
  • 2021-04-22
  • 2013-09-02
  • 1970-01-01
  • 1970-01-01
  • 2019-09-07
  • 2011-08-15
  • 1970-01-01
  • 2014-07-30
  • 2012-02-29
相关资源
最近更新 更多