https://blog.csdn.net/qq_42415827/article/details/121144656?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~Rate-1-121144656-blog-125626225.pc_relevant_multi_platform_whitelistv3&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~Rate-1-121144656-blog-125626225.pc_relevant_multi_platform_whitelistv3&utm_relevant_index=1
Vue 中实现快捷键CTRL + S(保存),CTRL+ Y(恢复),CTRL+ Z(回撤) 监听键盘事件
mounted() {
window.addEventListener('keydown', this.handleEvent)
},
beforeDestroy() {
window.removeEventListener('keydown', this.handleEvent) // 在页面销毁的时候记得解除
},
methods: {
async handleEvent(event) {
switch (event.keyCode) {
case 37:
console.log('ctrl + ←')
break
case 38:
console.log('ctrl + ↑')
break
case 39:
console.log('ctrl + →')
break
case 40:
console.log('ctrl + ↓')
break
case 67:
console.log('ctrl + c')
break
case 83:
console.log('ctrl + s')
event.preventDefault()
event.returnValue = false // 阻止直接保存网页
// eslint-disable-next-line no-prototype-builtins
if (event.ctrlKey && event.code === 'KeyS' && store.getters.forbidden.hasOwnProperty('ctrlS')) {
// 在这里写保存需要执行的逻辑
}
if (event.ctrlKey && event.code === 'KeyS') return false
break
case 86:
console.log('ctrl + v')
break
case 89:
console.log('ctrl + y')
if (event.ctrlKey && event.code === 'KeyY') {
this.$router.go(+1)
}
break
case 90:
if (this.$route.path === '登录成功重定向的路由,比如控制台:/dashboard') return // 防止退出项目
if (event.ctrlKey && event.code === 'KeyZ') {
this.$router.go(-1)
}
break
}
}
}
标签:
前端Vue
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)