监听键盘按下和弹起事件

<div class="center-container" id="ed-editor-container" tabindex="0"></div>

 

tabindex="0" 让div可获得聚焦

// 编辑器区域键盘事件监听

      this.edEditorContainer = document.getElementById('ed-editor-container')

      this.edEditorContainer.removeEventListener('keyup', this.handleKeyUpEvent)

      this.edEditorContainer.addEventListener('keyup', this.handleKeyUpEvent)

 

// 可按需手动聚焦

//  this.edEditorContainer.focus()

// 监听键盘事件

      handleKeyUpEvent(e) {

        // console.log(e)

        if (e.key === 'Delete' || e.key === 'Backspace') {

          // console.log('移除')

        } else if (e.key === 'c' && e.ctrlKey) {

          // console.log('复制')

        } else if (e.key === 'v' && e.ctrlKey) {

          // console.log('粘贴')

        } else if (e.key === 'z' && e.ctrlKey) {

          // console.log('撤销')

        } else if (e.key === 'y' && e.ctrlKey) {

          // console.log('恢复')

        }

      }

 

 

// 对于mac系统的键盘监听,特别是需要监听Command+Key 的组合键,由于按住Command键后无法监听到别的键弹起事件,因此监听键盘按下事件,但需注意的时,长按会持续触发按下事件,如长按Command+v就会持续触发粘贴事件

this.isMacSystem = navigator.userAgentData.platform.indexOf('mac') > -1

 

this.edEditorContainer.removeEventListener('keydown', this.handleKeyDownEvent)

this.edEditorContainer.addEventListener('keydown', this.handleKeyDownEvent)

 

 

handleKeyDownEvent(e) {

// console.log(e)

     if (e.key === 'Delete' || e.key === 'Backspace') {

                 // console.log('移除')

     } else if (e.key === 'c' && e.metaKey) {

      // console.log('复制')

} else if (e.key === 'v' && e.metaKey) {

          // console.log('粘贴')

} else if (e.key === 'z' && e.metaKey) {

     // console.log('撤销')

     } else if (e.key === 'y' && e.metaKey) {

          // console.log('恢复')

     }

}

体验参考:简单设计EasyDesign-免费在线设计工具图片处理工具简单设计是一款专业强大的在线设计工具,图片处理工具,包含海报设计、封面图片设计,LOGO设计、图片压缩、图片裁剪、图片格式转换等功能,是一款良心好用的设计神器。icon-default.png?t=N7T8https://jiandan.link/app/poster?index=0&com=auto

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/475017.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【100%成功】从0到1教你开通GPT4.0会员,一年立省1800,拒绝高价代开,免排队无需等待。

我们看下这个网址代开差不多要300&#xff0c;而我用Fomepay每个月才150左右&#xff0c;不需要年费月费&#xff0c;虽然有开卡费用10刀&#xff0c;但是也很划算&#xff0c;你自己算一下&#xff0c;一个月300一年就1千多 点击获取卡&#xff0c;0年费0月费 开卡步骤很简…

卫生间尺寸大揭秘,让你装修不再迷茫。福州中宅装饰,福州装修

卫生间的布局和尺寸因卫生间的大小和设计风格而异。以下是一些常见的布局和尺寸&#xff1a; 1. 洗漱区&#xff1a; 洗手台的宽度一般为600mm&#xff0c;高度为850~900mm。洗手台外边距离障碍物应预留600mm&#xff0c;可容纳人员站立或弯腰时的纵向尺寸。弯腰洗脸横向活动…

Linux/Perfection

Enumeration nmap 用 nmap 扫描了常见的端口&#xff0c;发现对外开放了 22,80&#xff0c;扫描一下详细信息&#xff0c;如下所示 ┌──(kali㉿kali)-[~/vegetable/HTB/Perfection] └─$ nmap -sC -sV -p 22,80 10.10.11.253 -oA nmap Starting Nmap 7.93 ( https://nmap…

Mysql总结(附思维导图)

Mysql Mysql索引 使用 创建主键索引 在对应字段后指定primary_key&#xff1a;id int primary key 创建唯一索引 在对应字段后指定unique_key&#xff1a;name varchar(20) unique 创建普通索引 在创建表的最后&#xff0c;指定某列或某几列&#xff1a;index(name) 创建全…

【JAVA笔记】IDEA配置本地Maven

文章目录 1 配置本地Maven1.1 Maven下载1.2 Maven安装与配置1.2.1 安装1.2.2 配置1.2.2.1 环境配置1.2.2.2 本地仓库配置 2 IDEA设置本地Maven 1 配置本地Maven 1.1 Maven下载 官网&#xff1a;http://maven.apache.org/下载地址&#xff1a;http://maven.apache.org/downloa…

腾讯云优惠券、代金券、折扣券领取方法及使用教程

腾讯云作为国内领先的云计算服务提供商&#xff0c;一直致力于为广大用户提供高效、稳定、安全的云服务。为了吸引用户上云&#xff0c;腾讯云经常推出各种优惠活动&#xff0c;其中就包括腾讯云优惠券。下面小编将详细介绍腾讯云优惠券的相关信息&#xff0c;包括种类、领取入…

Coze知识库新上线!是否真的好用?

近期&#xff0c;Coze知识库工具新上线并迅速引起了行业内的关注。作为一款公认的知识管理和团队协作工具&#xff0c;Coze被赞誉为"团队协作的游戏规则修改者"。那么&#xff0c;Coze是否真的如传闻中那么好用呢&#xff1f; 首先&#xff0c;从优势来看&#xff0c…

考研数学|《660》题这样刷,效率最高!

首先要了解一下660的难度&#xff0c;我认为660的难度是在基础和强化之间的一本习题册。具有一些比较好的选填题目&#xff0c;有些题目可能对初学者来说较为困难&#xff0c;尤其是一些包含二级结论的一些题目。但是对于强化阶段来说&#xff0c;这本题目可能难度较低了一些。…

【鸿蒙HarmonyOS开发笔记】应用数据持久化之通过用户首选项实现数据持久化

概述 应用数据持久化&#xff0c;是指应用将内存中的数据通过文件或数据库的形式保存到设备上。内存中的数据形态通常是任意的数据结构或数据对象&#xff0c;存储介质上的数据形态可能是文本、数据库、二进制文件等。 HarmonyOS标准系统支持典型的存储数据形态&#xff0c;包…

mybatis-plus和mybatis同时引入时,出现的问题

这里同时引入了一个mybatis-plus和mybatis&#xff0c;导致了配置文件里面配置的映射文件一直没生效&#xff0c;一直报错找不到隐私文件 mapper-locations 同时引入是这个是不会生效的 只有用mybatis.mapper-locations配置时才会生效

鸿蒙Harmony应用开发—ArkTS-粒子动画

粒子动画是在一定范围内随机生成的大量粒子产生运动而组成的动画。动画元素是一个个粒子&#xff0c;这些粒子可以是圆点、图片。通过对粒子在颜色、透明度、大小、速度、加速度、自旋角度等维度变化做动画&#xff0c;来营造一种氛围感&#xff0c;比如下雪的动效&#xff0c;…

基于java+springboot+vue实现的智慧养老院管理系统(文末源码+Lw+ppt)23-490

摘 要 智慧养老院管理系统采用B/S架构&#xff0c;数据库是MySQL。网站的搭建与开发采用了先进的java进行编写&#xff0c;使用了springboot框架。该系统从三个对象&#xff1a;由管理员和家属、护工来对系统进行设计构建。主要功能包括&#xff1a;个人信息修改&#xff0c;…

文件IO(代码案例: 文件复制, 指定目录查找文件, 指定目录查找内容)

文件复制 进行普通文件的复制 使用操作字节流的对象操作文件 // 文件复制 public class Main {public static void main(String[] args) throws IOException {// 输入两个路径, 源路径, 目的路径Scanner scanner new Scanner(System.in);System.out.println("请输入拷贝文…

主机游戏:怀旧浪潮与未来创新的交汇

《主机游戏&#xff1a;怀旧浪潮与未来创新的交汇》 一、主机游戏的怀旧魅力 1、经典的再现&#xff1a;随着时间的推移&#xff0c;主机游戏不仅成为一种娱乐方式&#xff0c;更成为一代人的集体回忆。经典的像素画风、复古的音乐和简单却深入人心的故事情节&#xff0c;使得…

JavaScript高级(十三)---ES6中Set,map

ES6 Set 在ES6之前&#xff0c;我们存储数据的结构主要有两种&#xff1a;数组、对象。 在ES6中新增了另外两种数据结构&#xff1a;Set、Map&#xff0c;以及它们的另外形式WeakSet、WeakMap。 Set是一个新增的数据结构&#xff0c;可以用来保存数据&#xff0c;类似于数组&a…

Qt QGraphicsView移动、缩放

原链接 首先需要明白&#xff0c;view在整个视图框架中的角色是用于显示scene的&#xff0c;所以决定了如何展示scene&#xff0c;包括scale()函数&#xff0c;用于放大缩小所展示的scene&#xff1b;centerOn()函数&#xff0c;决定scene的中心在何方。所有的操作&#xff0c…

VS2019 C++ NetCDF配置

原链接1 原链接2 做个备份 1.下载对应的NetCDF-C和C库 官网下载 选择64位的NetCDF4安装版&#xff08;没有DAP的&#xff09; 现在官网已经没有NetCDF-C 4.7.3 版本了&#xff0c;网上别人提供了新的下载地址&#xff1a;NetCDF各个版本&#xff08;Index of /library/net…

vue iframe实现父页面实时调用子页面方法和内容

父页面标签添加鼠标按下事件 父页方法中建立iframe通信 实时调用子页面方法 实时更改子页面文本内容

贵州省二级分类土地利用数据(矢量)

贵州省&#xff0c;地处中国西南腹地&#xff0c;地貌属于中国西南部高原山地&#xff0c;境内地势西高东低&#xff0c;自中部向北、东、南三面倾斜&#xff0c;平均海拔在1100米左右。贵州高原山地居多&#xff0c;素有“八山一水一分田”之说。全省地貌可概括分为&#xff1…

基于SpringBoot的街道办管理系统

摘 要 随着世界经济信息化、全球化的到来和互联网的飞速发展&#xff0c;推动了各行业的改革。若想达到安全&#xff0c;快捷的目的&#xff0c;就需要拥有信息化的组织和管理模式&#xff0c;建立一套合理、动态的、交互友好的、高效的街道办管理系统。当前的信息管理存在工作…