' Alt键' keyup事件不能使用字母数字组合

时间:2017-02-28 14:02:28

标签: javascript internet-explorer events keyup alt

我想用这种行为实现热键:

Alt ,按 A ,发布 A ,按 1 ,发布 1 ,发布 Alt

然后执行一些绑定到 Alt-A1 热键的逻辑。

我以为我可以跟踪Alt的keydown和keyup之间的所有键。但不幸的是,我最终无法捕获Alt的keyup事件。

奇怪的是,当只按Alt键时,我同时捕获了keydown和keyup事件。 但是当我按住Alt时按下其他东西(甚至是Alt-A,用于intsance),似乎发生了一些其他逻辑并抑制了Alt的键盘事件。

是IE的一些特定问题(我试过IE8和IE11)?例如,因为我可以在Chrome中捕获它。 你会在这推荐什么方法?

UPD: 实际上,由于Internet Explorer团队无法重现,因此关闭了一个错误: https://connect.microsoft.com/IE/feedback/details/807606/ie-does-not-catch-keyup-for-alt-button-after-pressing-key-combination



var keys = [];
document.body.innerHTML = "Keys currently pressed: "
window.addEventListener("keydown",
    function(e){
        keys[e.keyCode] = e.keyCode;
        var keysArray = getNumberArray(keys);
        document.body.innerHTML = "Keys currently pressed:" + keysArray;
        if(keysArray.toString() == "18,65"){
            document.body.innerHTML += " Did it!"
        }
    },
false);

window.addEventListener('keyup',
    function(e){
        keys[e.keyCode] = false;
        document.body.innerHTML = "Keys currently pressed: " + getNumberArray(keys);
    },
false);

function getNumberArray(arr){
    var newArr = new Array();
    for(var i = 0; i < arr.length; i++){
        if(typeof arr[i] == "number"){
            newArr[newArr.length] = arr[i];
        }
    }
    return newArr;
}
&#13;
&#13;
&#13;

0 个答案:

没有答案