如何用 TypeScript 代码区分一个 button 动作是由键盘还是鼠标触发的
如下图所示:这个 icon,既可以直接通过鼠标点击,又可以通过键盘 tab 键将 focus 移至其上,然后敲键盘回车键完成点击。
在代码里,如何判断这两种情形?
@HostListener('keydown.enter', ['$event'])@HostListener('keydown.space', ['$event'])handlePress(event: KeyboardEvent): void {event?.preventDefault();if (event?.target === this.element.nativeElement && !this.isOpen) {this.eventSubject.next(PopoverEvent.OPEN_BY_KEYBOARD);} else if (this.isOpen) {this.eventSubject.next(PopoverEvent.CLOSE_BUTTON_KEYDOWN);}}
通过 @HostListener 监听指令宿主元素即 button 元素的 keydown.enter 和 keydown.space 事件。如果发生,说明键盘被按下来了。
这里的事件类型为 KeyboardEvent.
keydown.tab 和 keydown.shift.tab 说明 tab 键被按下。
如果是鼠标点击,事件名称为 click,对应的事件对象类型为 MouseEvent.
更多Jerry的原创文章,尽在:“汪子熙”:
如何用 TypeScript 代码区分一个 button 动作是由键盘还是鼠标触发的相关推荐
- python月亮_如何用python代码画一个月亮
如何用python代码画一个月亮 发布时间:2020-06-17 15:52:21 来源:亿速云 阅读:181 作者:元一 Python简介 Python是一种跨平台的计算机程序设计语言. 是一个高层 ...
- 在圣诞及元旦的日子里如何用html代码画一个爱心树
一.前言 在圣诞节以及元旦节日来临的日子里,如果能亲自为自己所爱的人画一个爱心树,这肯定是个很浪漫的事.那么如何用代码画出圣诞树呢?用我的办法就能很简单的实现,复制-粘贴-另存就可完成. 二.创意名 ...
- 在Qt中如何用纯代码写一个本地视频播放器
一.首先用纯代码写本地视频播放器需要用到以下类 #include <QWidget> #include <QHBoxLayout> //水平布局 #include <QV ...
- python炫酷动画源代码_Python小技巧:如何用Python代码发一个炫酷的朋友圈
相信很多朋友在发朋友圈的时候,都会发一些话语,有些还会配一张图,但是普通的配图怎么符合我们程序员的身份呢?发出去都觉得没牌面,应该整点技术性的活. 今天给大家带来一个项目,这个小项目只用50行代码就能 ...
- 如何用Python代码发一个炫酷的朋友圈
相信很多朋友在发朋友圈的时候,都会发一些话语,有些还会配一张图,但是普通的配图怎么符合我们程序员的身份呢?发出去都觉得没牌面,应该整点技术性的活. 今天给大家带来一个项目,这个小项目只用50行代码就能 ...
- 入门攻略丨教你用低代码实现一个简单的页面跳转功能
一.介绍 HUAWEI DevEco Studio(后文简称:IDE)自2020年9月首次发布以来,经10次迭代升级,不断为HarmonyOS应用开发增强能力.3月31日,IDE再度升级到DevEco ...
- 人工智能换脸pythonapp_如何用小200行Python代码做一个换脸程序?
今日不同往常,每周干货日,场主送出的不是成套的各类编程教学视频,而是一些轻应用实操.因为完成基本的理论学习之后,任何的呈现都在于如何应用及创新. 所以,在分享一系列教材类视频外,场主还会穿插着分享给大 ...
- python换脸完整程序_如何用小200行Python代码做一个换脸程序?
今日不同往常,每周干货日,场主送出的不是成套的各类编程教学视频,而是一些轻应用实操.因为完成基本的理论学习之后,任何的呈现都在于如何应用及创新. 所以,在分享一系列教材类视频外,场主还会穿插着分享给大 ...
- ds--8600使用手册_我如何用57行代码复制一个价值8600万美元的项目
ds--8600使用手册 by Tait Brown 泰特·布朗(Tait Brown) 我如何用57行代码复制一个价值8600万美元的项目 (How I replicated an $86 mill ...
最新文章
- 落地即一地鸡毛,AI落地存在的难题有哪些?
- 使用R实现一个简单的连续系统模拟
- node 关键点总结
- 解决fatal: 不是一个 git 仓库(或者任何父目录)的方法
- MySQL中事物的详解
- 【送给读者】全新苹果 AirPods,包邮送一套!
- 2006年9月全国计算机等级考试三级数据库技术笔试试卷(含有答案)
- 躺赚的意思不是做到高级别就觉得高枕无忧了
- Linux 命令(18)—— screen 命令
- 聊聊我对写好程序的认识
- DELPHI中完成端口(IOCP)的简单分析(1)
- css+js显示点阵字体/LED七段数码管字体(模拟)
- SODB、RBSP和EBSP
- ae导出gif插件_有了它,AE终于可以直接导出gif动图啦!
- 机器学习 特征选择(过滤法 封装法 嵌入法)
- JavaScript实现左右分栏宽度拉伸
- 190108每日一句
- 清新小学生文明礼仪PPT模板
- 阿里云MQTT_Password工具下载地址
- UBUNTU 16.04无线网卡驱动