Javascript: 如何处理开关盒内的 Shift + Tab?

Javascript: How to handle Shift + Tab inside switch case?

所以我一直在使用嵌套的 if-else & event.which 来处理所有键盘导航,但我想更改为 switch-case & event.key

我在处理 shift+tab 事件时遇到问题。
我试过:

switch(event.key){
  case "Shift":
    console.log("entering shift");
    if(event.key === "Tab"){//do something}
    console.log("exiting shift");
    break;
  case "Tab":
    //handling only tab events
    break;
}

但这似乎不起作用。控件进入移位块并离开移位块,而不输入 if(event.key === "Tab") 部分。因此,我无法处理 SHIFT + TAB.

也尝试了 case "Shift" && "Tab":{},但这阻碍了 Tab-only 块。

有没有办法在switch-case.

中处理SHIFT + TAB
switch(event.key){
  case "Shift":
    console.log("entering shift");
//you enter this case because event.key === "Shift"
//so event.key === "Tab" will always be false
    if(event.key === "Tab"){//do something}
    console.log("exiting shift");
    break;

我认为您真的不需要在这里使用 switch,因为一些简单的 if 就可以了:

let shift = false;
document.addEventListener('keydown', event => {
  if (event.key === 'Shift') {
     shift = true;
  }
});
document.addEventListener('keyup', event => {
   if (event.key === 'Shift') {
      shift = false;
   }

   if (event.key === 'Tab' && shift) {
      //do stuff
   }
  }
});