我想使用快捷方式来处理Javascript(而非JQuery或任何Javascript库)中的任务。例如,我想使用Ctrl + Q编写警报。我的问题是仅使用Ctrl + Q,其他键(例如Ctrl + Q +其他键)的组合将无法处理警报。我能怎么做?
document.addEventListener('keydown', function(event){
if(event.ctrlKey && event.keyCode == 81) console.log('alert');
});Run Code Online (Sandbox Code Playgroud)
我只希望Ctrl + Q起作用,而不是Ctrl + Shift + Q,Ctrl + Alt + Q,Ctrl + Q +(其他键)
Set*_*eth -1
您需要跟踪按下了哪些键keydown以及使用 释放了哪些键keyup,然后,当按下新键时,您将仅检查当前是否按下了 Ctrl 和 Q。
像这样的东西应该有效:
var keysPressed = [];
function onPressOrRelease(event) {
if (event.type === "keydown") {
if (!keysPressed.includes(event.keyCode))
keysPressed.push(event.keyCode)
} else if (event.type === "keyup")
keysPressed.splice(keysPressed.indexOf(event.keyCode), 1);
let ctrlQPressed = keysPressed.includes(81) && keysPressed.includes(17) && !keysPressed.some(a => a !== 81 && a !== 17)
if (ctrlQPressed)
console.log("pressed");
}
document.addEventListener("keydown", onPressOrRelease);
document.addEventListener("keyup", onPressOrRelease);Run Code Online (Sandbox Code Playgroud)
您需要确保键不会被多次添加,并且可能需要在焦点丢失时清除数组(因为使用控件,释放时可能会失去焦点)