如何在 Javascript 中检测按键序列

问题描述 投票:0回答:1

我正在编写一个用户脚本,每次执行快捷方式序列时都会在论坛中发布[ ctrl + Enter ],但我编写的函数将两个按键作为单独的事件执行,而不是单个序列。

我检查了相关问题,但没有一个真正解释了如何配置函数来处理序列。

这是我写的代码:

let boutton_toast = document.querySelector('.btn-poster-msg');

function toast(e){
    if (e.ctrlKey && e.key=="Enter"){
       boutton_toast.click();
}
document.addEventListener("keydown", toast)

我觉得答案很明显,但我猜不出来。

javascript dom-events keyboard-events userscripts
1个回答
0
投票

您可以尝试创建一个存储变量的列表(或任何数据结构),如下所示:

pressedKeys = [];

function bothKeysPressed() {
    if (pressedKeys.includes('Enter') && pressedKeys.includes('Control')) {
      console.log("Enter and Control are pressed!");
    }
}

document.addEventListener('keydown', () => {
   pressedKeys.push(event.key)
   bothKeysPressed();
})

document.addEventListener('keyup', () => {
   pressedKeys = pressedKeys.filter(key => key !== event.key)
})

然后只需在“keydown”侦听器中包含一个附加函数来检查您需要的两个键。

© www.soinside.com 2019 - 2024. All rights reserved.