我想用这种行为实现热键:
按 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;