【问题标题】:How to detect shift + right arrow + some other key in angular如何检测移位+右箭头+角度中的其他一些键
【发布时间】:2015-05-20 08:22:48
【问题描述】:

我在检测角度中的 shift + 右箭头 + p 时遇到问题。
我正在使用角度 1.2.3 我只检测到右箭头 + p 没有问题,但是当换档进入游戏时,会出现刹车

问题是热检测3键按下时的情况:SHIFT + RIGHT ARROW + P

这是plunker 上的一个工作示例

var app = angular.module('keyboardDemo', []);

app.controller('MainCtrl', function($scope, $timeout) {
    /**
     * 39 (right arrow)
     * 80 (p)
     */
    var map = {39: false, 80: false};

    $scope.onKeyUp = function(event){
        if (map[39] && map[80]) {
            $scope.data.message1 = "P + RIGHT pressed!";
            $timeout(function(){
               $scope.data.message1 = '';
            }, 1000);
        }

        if (event.shiftKey && map[39] && map[80]) {
            $scope.data.message2 = "SHIFT + P + RIGHT pressed!";
            $timeout(function(){
               $scope.data.message2 = '';
            }, 1000);
        }

        var keyCode = getKeyboardEventCode(event);
        if (keyCode in map) {
            clearKeyCode(keyCode);
        }
    };


    $scope.onKeyDown = function(event){
        var keyCode = getKeyboardEventCode(event);
        if (keyCode in map) {
            map[keyCode] = true;
        }
    }


    var getKeyboardEventCode = function (event) {
        return parseInt((window.event ? event.keyCode : event.which));
    };

    function clearKeyCode(code){
        map[code] = false;
    }

    $scope.data = {
      'message1': '',
      'message2': ''
    };
});

【问题讨论】:

  • 我不知道我是否只是不明白你想做什么,但你的 plunker 很适合我。
  • 仅按 P + 右箭头时效果很好。出现消息“P + RIGHT 已按下!”但是当你按下“SHIFT + P + RIGHT ARROW 应该会出现消息“SHIFT + P + RIGHT 按下!”这对我来说不会发生。
  • 可能是浏览器问题?我在 macOS 上使用 chrome,当我按下“SHIFT + P + RIGHT ARROW”并释放按键时,我看到了两条消息。
  • 谢谢@Okazari .... 非常有用的信息。我正在寻找一种适用于所有主要浏览器的解决方案。我在 Windows 上尝试过 Chrome、IE9 和 Firefox,但对我不起作用。
  • 由于我实际上无法重现,我将尝试在家里的窗户上进行测试。如果它仍然有效,这将很难发现。

标签: javascript angularjs keyboard-shortcuts keyboard-events keyup


【解决方案1】:

正如评论中所说。您的代码实际上运行良好。在 macOS 上使用 chrome,当我按下“SHIFT + P + RIGHT ARROW”并释放按键时,我会看到两条消息。

【讨论】:

    猜你喜欢
    • 2012-12-09
    • 2013-06-01
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    相关资源
    最近更新 更多