如何监听键盘复制粘贴删除?实现监控复制粘贴删除,兼容windows和mac:constonKeyDown=(e)=>{const{metaKey,ctrlKey,key}=econstisCtrlOrCommand=ctrlKey||metaKeyif(isCtrlOrCommand&&key.toLocaleLowerCase()==='c'){console.log('copy')return}if(isCtrlOrCommand&&key.toLocaleLowerCase()==='v'){console.log('paste')return}if(['Delete','Backspace'].includes(key)){console.log('Delete')return}}当鼠标聚焦在其他元素上时,不触发任何键盘事件:constonKeyDown=(e)=>{const{tagName}=document.activeElement||{}if(tagName&&tagName.toLocaleUpperCase()!=='BODY'){return}const{metaKey,ctrlKey,key}=econstisCtrlOrCommand=ctrlKey||复制代码metaKeyif(isCtrlOrCommand&&key.toLocaleLowerCase()==='c'){console.log('copy')return}if(isCtrlOrCommand&&key.toLocaleLowerCase()==='v'){console.log('paste')return}if(['Delete','Backspace'].includes(key)){console.log('Delete')return}}什么是键盘事件?监听键盘事件的操作分为三种:keydown、keypress、keyup。按下键盘触发的键盘事件顺序为:keydown->keypress->keyup。keydown当用户按下键盘上的任意键时触发,此事件会重复触发;keypress当用户按下键盘上的某个字符键时触发,该事件会重复触发;keyup当用户松开键盘上的某个字符键时触发Event;differencekeypress:只能捕获单个字符,可以捕获单个字符的大小写,不区分小键盘和主键盘的数字字符,不能监听功能键;keydown/keyup:可以捕获组合键,不能区分大小写字母,区分小键盘和主键盘的数字字符;KeyboardEventKeyboardEvent对象描述了用户与键盘的交互。每个对象都描述了用户和键盘之间的一次交互(键和修改键的组合);commonattribute属性名称类型描述altKeyBoolean当按下Windows的Alt键或Mac的Option或?键时,值为truemetaKeyBoolean当按下Mac的Command键或Windows的?键时,值为truectrlKeyBoolean。当按下Ctrl键时,值为trueshiftKeyBoolean。当按下Shift键时,该值为truecodeString以标识按下的是哪个物理键。键盘每个键对应一个唯一的值。keyString表示具体输入的字符内容,如果是非打印字符(如Enter键、Esc键、Shift键、Alt键等),则返回具体非打印字符的英文名称,如果是输入内容与输入法相关,返回一个固定的Process名称。keyCodeNumber[废弃属性,不推荐]该值跟随键盘,不跟随字符内容。同一个键可能有不同的keyCode,同一个字符可能有不同的keyCode。mac按下command键的KeyboardEvent为:mac按下f键的KeyboardEvent为:
