在Javascript中,我想写一个返回,当前按下所有键列表的功能(这样我可以允许用户创建自定义快捷键.)有什么办法来获得在Javascript中所有当前按下键的列表?
改进上一个答案,我写了一个演示,打印 keydown 和 keyup 上的按键列表。
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() == "17,65"){
document.body.innerHTML += " Select all!"
}
},
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;
}
?
Run Code Online (Sandbox Code Playgroud)
keydown就会发送一个事件keyup将触发一个事件因此,您只需将键保存在一个数组中,然后检查您的组合是否为真.
var keys = [];
window.addEventListener("keydown",
function(e){
keys[e.keyCode] = true;
checkCombinations(e);
},
false);
window.addEventListener('keyup',
function(e){
keys[e.keyCode] = false;
},
false);
function checkCombinations(e){
if(keys["a".charCodeAt(0)] && e.ctrlKey){
alert("You're not allowed to mark all content!");
e.preventDefault();
}
}
Run Code Online (Sandbox Code Playgroud)
需要注意的是,你应该使用e.key,而不是e.keyCode只要有可能(在这种情况下var key = {},因为e.key是一个字符串).
| 归档时间: |
|
| 查看次数: |
7329 次 |
| 最近记录: |