【问题标题】:How to disable keyboard shortcuts completely from JavaScript如何从 JavaScript 中完全禁用键盘快捷键
【发布时间】:2016-09-01 13:55:21
【问题描述】:

我正在使用Phaser 2.2.2开发打字游戏,有一个方法叫:

game.input.keyboard.addKeyCapture(/*[array of keycodes]*/);

这适用于空格(无页面滚动),点,逗号破折号(破折号导致一个网页向后)但不适用于单引号,因为我仍然可以使用它打开快速查找,即浏览器仍然检测到快捷方式.此方法可防止按键在按下时的冒泡状态传播到浏览器,即浏览器未检测到按键。

addKeyCapture

我还发现了这个漂亮的打字应用程序,它可以完全禁用键盘快捷键,就像魔术一样:https://typing.io/ 无需额外配置或安装插件或插件。

如何在我的 Phaser 游戏中也实现这一点?我应该放一些第三方的JS库吗?

啊,顺便说一句,这个工具是完成这项工作的:https://github.com/jeresig/jquery.hotkeys

【问题讨论】:

    标签: javascript jquery browser keyboard-shortcuts


    【解决方案1】:

    onkeydown 事件在用户按键时发生,你可以通过返回 false 来阻止它:

    用途:

    document.onkeydown = function (e) {
            return false;
    }
    

    【讨论】:

    • 我可以用这个输入字母吗,例如 ~, ', ., - , Space ?
    • 嗯,这不是我要找的。我需要禁用键盘快捷键,即按空格时阻止滚动,或按单引号时阻止快速查找。
    • 但是空格和单引号会变得完全不可用?或者我在为特定键返回 false 之前工作?
    • 只有快捷键你需要使用keyCode检查...sing key press会自动处理
    • 但是它们将变得无法使用。是的,我知道你想要积分,但不能使用它。
    【解决方案2】:

    这为时已晚,但如果你想阻止键盘快捷键,大多数快捷键使用 ctrl 键,使用jQuery 阻止该键的代码将是:

    $("input[name='yourinput']").keypress(function(event) {
        if ( event.keyCode == 17 ) {
             event.preventDefault();
        }
    });
    

    注意:键 17 是 ctrl 键。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-06
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-31
      • 2014-05-29
      相关资源
      最近更新 更多