首页 > 解决方案 > Angular 键盘快捷键的更多组合?

问题描述

我正在尝试为我们的网站创建键盘快捷键。其中之一是试图让用户轻松地重定向到他们想要的任何页面。我设法让基础工作就像简单地使用 shift + r 如下所示:

@HostListener('window:keydown.shift.r') spaceEvent() {
    this.redirect();
  }

但是,我不希望任何组合与用户可能已经在做的事情相混淆,所以我想让它建立在 Shift + 2 个字母键上。但是,无论我将其更改为:

@HostListener('window:keydown.shift.r.s') spaceEvent() {
    this.redirect();
  }

甚至重组为:

@HostListener('window:keydown', ['$event']) spaceEvent(event: any) {
    if ( event.key == "r" && event.key == "s" && event.key == "Shift") {
      this.redirect();
    };
  }

它不工作,我错过了什么吗?密钥是否写不正确?编辑:如果不可能,我还能做哪些其他组合不会干扰用户?像 TAB + "s" 这样的组合似乎不起作用,Enter + "s" 也不起作用。

Edit2:我尝试制作条件,但似乎没有将它们压在一起,您可以按顺序激活它,这并不是我真正想要的:

@HostListener('window:keydown', ['$event']) spaceEvent(event: any) {
    if ( event.key == "Shift") {
      this.keySwitch1 = true;
    };

    if (this.keySwitch1 && event.key == "r") {
      this.keySwitch2 = true;
    };

    if (this.keySwitch2 && event.key == "s") {
      this.settingRedirect();
    }
  }

Edit3:我坚持使用 Alt 键组合,但我会留下这个问题,看看是否有更好的多个键命令选项。

标签: angularredirectkeyboard-shortcutskeyboard-eventskeydown

解决方案


推荐阅读