Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript键盘事件未触发_Javascript_Dom Events_Keyboard Events - Fatal编程技术网

JavaScript键盘事件未触发

JavaScript键盘事件未触发,javascript,dom-events,keyboard-events,Javascript,Dom Events,Keyboard Events,由于一些非常奇怪的原因,当你按前进键、空格键和向左键的顺序按下时。Left不会激发,而是返回空格键。任何其他三个键的组合都可以很好地工作,但不是那个键。有什么线索说明原因吗 var Ctrl = { init: function() { window.addEventListener('keydown', this.keyDown, true); window.addEventListener('keyup', this.keyUp, true);

由于一些非常奇怪的原因,当你按前进键、空格键和向左键的顺序按下时。Left不会激发,而是返回空格键。任何其他三个键的组合都可以很好地工作,但不是那个键。有什么线索说明原因吗

var Ctrl = {
    init: function() {
        window.addEventListener('keydown', this.keyDown, true);
        window.addEventListener('keyup', this.keyUp, true);
    },

    keyDown: function(event) {
        console.log(event.keyCode);

        switch(event.keyCode) {
            case 37: // Left
                Ctrl.left = true;
                break;
            case 39: // Right
                Ctrl.right = true;
                break;
            case 38: // up
                Ctrl.up = true;
                break;
            case 40: // down
                Ctrl.down = true;
                break;
            case 32:
                Ctrl.space = true;
                break;
            default:
                break;
        }
    },

    keyUp: function(event) {

        switch(event.keyCode) {
            case 37: // Left
                Ctrl.left = false;
                break;
            case 39: // Right
                Ctrl.right = false;
                break;
            case 38:
                Ctrl.up = false;
                break;
            case 40:
                Ctrl.down = false;
                break;
            case 32:
                Ctrl.space = false;
                break;
            default:
                break;
        }
    }
};

这取决于键盘的型号。有些键盘不能与某些组合键配合使用。这是正常的。

可能您的某个键正在激活不需要的默认行为。您可以尝试添加
event.preventDefault()到您的事件绑定


问题可能在其他地方吗?例如,在阅读后,您在哪里将
Ctrl.space
设置为
false
?检查代码,没有其他错误。活动本身拒绝退回,所以我被难住了。是的,并非所有键盘都相同,您可以确保您的区域设置和键盘布局设置为您所在的正确国家。我想有一种防弹方法来检测键盘输入吗?也许不行?试了一下,似乎什么也没用。不过猜得不错。