javascript - Angular 2+ 拦截 Command+S 的优雅方式

标签 javascript angular cross-browser keyboard-shortcuts onkeyup

尝试为 Command+S 实现快捷键组合以保存表单。

我读过这个 - https://angular.io/guide/user-input , 但它没有说明任何有关元或命令的信息。

尝试用以下方式围绕表单:

<div
  (keyup.command.s)="save()"
  (keyup.command.u)="save()"
  (keyup.control.u)="save()"
  (keyup.control.s)="save()"
  (keyup.meta.u)="save()"
>

其中,只有 control.ucontrol.s 有效。

凭借 Angular 2+ 的所有强大功能和跨浏览器功能,我希望可以使用 (keyup...) 以某种优雅的方式处理此问题。

而且可以肯定的是,许多 Angular 开发者都使用 Mac :)。

我也读过 How does one capture a Mac's command key via JavaScript?http://unixpapa.com/js/key.html但仍然希望 Angular 优雅的解决方案,而不是与特定于浏览器的东西作斗争......

最佳答案

全局监听器,未弃用的答案:

@HostListener('window:keydown', ['$event'])
onKeyDown(event: KeyboardEvent) {
    if ((event.metaKey || event.ctrlKey) && event.key === 's') {
        this.save();
        event.preventDefault();
    }
}

关于javascript - Angular 2+ 拦截 Command+S 的优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45568829/

相关文章:

javascript - jQuery DataTables 遍历行并更改单元格背景

javascript - 使用 JavaScript 查找父元素的子元素

javascript - 从 MS-Word 粘贴到任何基于浏览器的 HTML 编辑器

Angular 4 : "Http failure response for (unknown URL): 0 Unknown Error"

html - Firefox 手机上的内部 anchor 位置(在 Android 上)

javascript - Three.js - 如何判断一个点是否在一条直线上?

angular - ViewChildren 和 ContentChildren QueryLists 监听什么样的变化?

angular - 在 Angular 8 中,如何将动态数据从 observable 传递到模态对话框?

css3 跨浏览器不透明度

CSS 显示 :inline/none with tables works with Firefox but not Chrome or Safari