【问题标题】:How to stop the browser's hotkeys?如何停止浏览器的热键?
【发布时间】:2015-10-10 06:20:55
【问题描述】:

我正在开发一款 HTML5 游戏,在我的游戏中,您使用空格键进行射击。这很好,直到我意识到在较小的屏幕上空格键会滚动到页面底部,隐藏部分游戏。如何阻止浏览器的热键使页面向下滚动?或者,当他们单击画布时,如何冻结该人的滚动。这是游戏的链接:http://73.9.75.150:8886/zn/index.html

密钥处理代码:

window.addEventListener("keydown", function(e){
    keys[e.keyCode] = true;
});

window.addEventListener("keyup", function(e){
    keys[e.keyCode] = false;
});

【问题讨论】:

  • 请在您的问题中显示相关的密钥处理代码。一般来说,您可能需要使用event.preventDefault() 来停止按键事件的默认行为。
  • @nnnnnn 我添加了代码

标签: javascript css html canvas


【解决方案1】:

您的典型事件侦听器调用如下所示:

window.addEventListener("keydown", function (e) {
    // shoot stuff
});

上述回调中的e参数是一个事件对象。它有一个方法调用preventDefault(),顾名思义,它将阻止事件的默认行为发生。

你可以这样使用它:

window.addEventListener("keydown", function (e) {
    if (e.keyCode === Keys.SPACEBAR) { // pseudo-code for key detection

        // shoot stuff
        e.preventDefault();

    }
});

这是一个标准功能,适用于大多数现代浏览器。您可能需要稍微不同地处理一些较旧的浏览器,或者使用一个库来为您处理跨浏览器事件问题。

【讨论】:

    【解决方案2】:

    可能的解决方案:

    document.addEventListener('keydown', function(e){
      if(e.keyCode === 32){
        e.preventDefault();
      }
    });
    

    【讨论】:

    • 改进答案的一个好方法是解释为什么这是一个可能的解决方案。欢迎使用 Stack Overflow,感谢您的贡献!
    猜你喜欢
    • 2020-06-13
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多