笔记本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>
-
星际时尚上涨2.21%,报1.39美元/股,总市值4719.05万美元
7月16日,星际时尚(STFS)盘中上涨2.21%,截至00:28,报1.39美元/股,成交5.86万美元,总市值4719.05万美元。财务数据显示,截至2024年12月31日,星际时尚收入总额6689.71万人民币,同比增长25.25%;归母净利润-270.73万人民币,同比减少134.43%。资
-
富士通空调24小时全国售后热线实时反馈-今-日-资-讯(富士通空调运行不稳定 )
富士通空调售后维修服务中心400-883-2086,致力于为客户提供全方位、专业且高效的产品维修解决方案。富士通空调维修服务中心拥有一支经验丰富、技术精湛的团队,他们对各类产品的结构和功能了如指掌,能够迅速准确地定位问题,以最小的干扰和最快的速度完成维修工作。我们的服务流程严谨而高效,从初步咨询、故
-
泰瑞达空调全国服务号码-全国400服务号码实时反馈-今-日-资-讯(泰瑞达空调压缩机故障 )
泰瑞达空调售后维修客服热线{400-883-2086} 泰瑞达空调是一款实用的家用产品,能够有效的保护我们的财富和贵重物品。随着时间的推移,即使是泰瑞达空调也会遇到一些故障和问题。泰瑞达空调服务热线24小时故障报修全天候保修热线】就是一个可以为您解决所有问题的地方。 服务区域范围:
-
惠而浦空调全国售后热线及常见问题解答(惠而浦空调空调自动开关机 )
惠而浦空调24小时售后服务电话:400-883-2086惠而浦空调全国统一客服维修热线:400-883-2086我们是惠而浦空调维修行业的专业团队,提供优质的惠而浦空调维修服务。我们了解惠而浦空调在家庭生活中的重要性,因此,我们承诺提供高效、快速、专业的维修服务,让您的惠而浦空调始终保持
-
冰轮中央空调售后服务24小时服务热线-全国400服务号码实时反馈全+境+到+达(冰轮中央空调空调显示E1故障码,怎么处理? )
冰轮中央空调售后服务维修电话:400-883-2086冰轮中央空调24小时维修客服热线:400-883-2086冰轮中央空调24小时服务电话《今日发布》冰轮中央空调附近上门服务电话7天24小时人工电话客服