笔记本numpad是什么键? vue兼容Mac和Win按键功能
shortcuts
大家或许会想到使用KeyCode键码,来进行判断,是的这是一种可行的方案。
但是需要同时兼容mac和win的话,就需要我们进行更多的优化。
今天给大家介绍一个成熟的库:https://github.com/fabiospampinato/shortcuts
安装
npm install --save shortcuts
用法
这个库提供了一个Shortcuts类,它将管理你的快捷键,和快捷键相关对象,并且还提供了一下实用的程序。
Shortcut 语法
供我们使用的按键分别有以下分类:
- 工具键 Alt/Option, Cmd/Command/Meta, Ctrl/Control, Shift, CmdOrCtrl/CommandOrControl
- 数字键 1-9
- 字母表键 A-Z
- 功能键 F1-F24
- Numpad 数字键 Numpad0-Numpad9
- 特殊键Backspace, Capslock, Del/Delete, Down, End, Enter/Return, Esc/Escape, Home, Insert, Left, PageDown, PageUp, Right, Space/Spacebar, Tab, Up.
- 符号键 !, ", #, $, %, &, ', (, ), *, +/plus, ,, -,., /, :, ;, <, =, >, ?, @, [, \, ], ^, _ ,{, |, },~, `
使用时注意
- 快捷键不区分大小写
- 使用组合键的时候必须要加一个加号(eg:Ctrl+A)
- 组合键序列必须加一个空格(eg:Ctrl+K Ctrl+B)
Shortcut 类
此工具类中分别有以下方法add/remove/reset/record.
class Shortcuts { constructor ( options?: { shortcuts?: ShortcutDescriptor[]: capture?: boolean, target?: Node, shouldHandleEvent?: event => boolean } ); get (): ShortcutDescriptor[]; add ( descriptors: ShortcutDescriptor | ShortcutDescriptor[] ); remove ( descriptors: ShortcutDescriptor | ShortcutDescriptor[] ); reset (); record ( handler: ( shortcut ) => any ): Function;}
用法
import {Shortcuts} from 'shortcuts';const shortcuts = new Shortcuts ();function CtrlBHandler () {};shortcuts.add ([ // Adding some shortcuts { shortcut: 'Ctrl+A', handler: event => { console.log ( event ); return true; // Returning true because we don't want other handlers for the same shortcut to be called later }}, { shortcut: 'Ctrl+B', handler: CtrlBHandler }, { shortcut: 'CmdOrCtrl+K Shift+B', handler: () => { // Doing something... return true; // Returning true because we don't want other handlers for the same shortcut to be called later }}, { shortcut: '-Ctrl+A' } // Removing the previous shortcut]);shortcuts.remove ({ shortcut: 'Ctrl-B', handler: CtrlBHandler }); // Removing a single handlershortcuts.remove ({ shortcut: 'Ctrl-A' }); // Removing all handlers bound to this shortcutshortcuts.reset (); // Removing all shortcutsconst dispose = shortcuts.record ( shortcut => { // Recording shortcuts console.log ( 'Shortcut recorded:', shortcut );});dispose (); // Stopping recording
Shortcut 对象
它还提供了其他的应用程序:
const Shortcut = { shortcut2id ( shortcut: string ): number[]; shortcut2accelerator ( shortcut: string ): string; shortcut2symbols ( shortcut: string ): string;};
用法
import {Shortcut} from 'shortcuts';Shortcut.shortcut2accelerator ( 'Meta+Del' ); // => 'Cmd+Delete'Shortcut.shortcut2symbols ( 'Cmd+Shift+A' ); // => '⌘⇧A'
实例
如上图所示,主页面和弹窗内分别都有添加按钮。
我们可以通过判断弹窗是否弹出来区分相同的按钮来执行不同的功能。
代码
- main.js中引用shortcuts,将其作为全局的方法
import Vue from 'vue'import App from './App.vue'import {Shortcuts} from 'shortcuts';Vue.prototype.$shortcuts = new Shortcuts();Vue.config.productionTip = falsenew Vue({ render: h => h(App),}).$mount('#app')
- helloWorld.vue
<template> <div > <h1>{{ msg }}</h1> <div > <h3>按钮组合列表</h3> <div> <div> <button @click="add">添加</button> <span>CmdOrCtrl+A</span> </div> <div> <button @click="del">删除</button> <span>CmdOrCtrl+D</span> </div> <div> <button @click="print">打印</button> <span>CmdOrCtrl+P</span> </div> <div> <button @click="functionKey">F1</button> <span>F1</span> </div> </div> <p >{{keyMsg}}</p> </div> <div > <h3>弹窗内使用按键</h3> <button @click="openPop">打开弹窗</button> <div id="vModal" v-if="isShow"> <div ></div> <div > <p @click="isShow = false">X</p> <p>弹窗内按钮如何在关闭弹窗的时候禁用?!</p> <button @click="addPopbtn">弹窗内添加</button> <button @click="dialogMsg=''">清空</button> <p >{{dialogMsg}}</p> </div> </div> </div> </div></template><script>export default { name: 'HelloWorld', props: { msg: String }, data(){ return{ keyMsg:'', dialogMsg:'', isShow:false } }, created(){ this.keycodeEvent() }, methods:{ add(){ this.keyMsg='添加' console.log('添加') }, addPopbtn(){ this.dialogMsg='弹窗内添加按钮' }, openPop(){ this.dialogMsg='' this.isShow=true }, del(){ this.keyMsg='删除' console.log('删除') }, print(){ this.keyMsg='打印' console.log('打印') }, functionKey(){ this.keyMsg='F1' console.log('F1') }, // 添加热键 keycodeEvent() { this.$shortcuts.add([ // Adding some shortcuts { shortcut: 'cmdorctrl+A',//支持大小写 handler: event => { console.log ( event ); if(document.querySelector('#vModal')){//如果弹窗出现,按键触发弹窗内的方法 this.addPopbtn() }else{ this.add() } return true; } }, { shortcut: 'CmdOrCtrl+D', handler: event => { console.log ( event ); this.del() return true; } }, { shortcut: 'CmdOrCtrl+P', handler: event => { // 打印 console.log ( event ); this.print() return true; } }, { shortcut: 'F1', handler: event => { console.log ( event ); this.functionKey() return true; } }, ]); } }}</script>
-
tica空调服务24小时热线-各区售后统一服务实时反馈-今-日-资-讯(tica空调空调显示F4故障码,怎么处理? )
tica空调售后维修服务热线24小时:400-883-2086tica空调作为一家知名的空调品牌,一直以来都以其卓越的品质和可靠的性能著称。为了更好地服务于广大用户,tica空调特地设立了专业维修服务热线,24小时全天候为用户提供技术支持和专业服务,帮助用户更好地使用和维护中央空调设备。
-
华科空调客服人工号码(全国统一)400客服热线实时反馈-今-日-汇-总(华科空调空调e6什么意思 )
华科空调售后服务电话为400-883-2086,全国24小时热忱服务。华科空调致力于提供高端尊贵的服务体验,通过敏捷快速的智能服务体系,实现一站式解决方案。我们的服务网点遍布多个城市,包括北京、上海、广州、深圳等,确保及时上门维修,解决您的后顾之忧。华科空调客服人工号码(全国统一)400客服热线
-
AIRWELL空调400服务号码全国售后的热线实时反馈全+境+到+达(AIRWELL空调空调内机怎么拆 )
AIRWELL空调的全国售后服务电话是400-883-2086。拨打此电话,您可以预约售后服务,之后售后服务网点会根据您所在的地区进行就近安排,并与您联系,以安排上门维修。虽然不同地区的具体售后电话号码可能不同,但售后服务流程是一致的。如何进行AIRWELL空调的售后维修?1. 您可以拨
-
华菱空调全国统一服务号码-全国服务热线实时反馈-今-日-资-讯(华菱空调空调凉之夏 )
华菱空调24小时服务,解疑答惑华菱空调的售后服务电话是:400-883-2086。我们提供全天候的24小时服务,确保您的冰箱始终保持最佳状态。🛠️ 服务流程:电话预约现场检查制定维修程序确定维修价格开始维修维修后开启保修生成维修文件华菱空调全国统一服务号码
-
一村空调全国各市售后服务点热线号码实时反馈-今-日-更-新(一村空调空调内机 )
一村空调全国24小时售后服务电话号码400-883-2086, 全国24小时售后服务电话号码400-883-2086,服务为先,满意为念,服务无/极/限,真/诚/到永远。讲诚信、树新风、诚以待人、信以立世、认真负责、精益求精、积极热情,本公司为全国维修服务!全/天候、全/天蔬诚为您服