sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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(回撤) 监听键盘事件

  1. mounted() {
  2. window.addEventListener('keydown', this.handleEvent)
  3. },
  4. beforeDestroy() {
  5. window.removeEventListener('keydown', this.handleEvent) // 在页面销毁的时候记得解除
  6. },
  7. methods: {
  8. async handleEvent(event) {
  9. switch (event.keyCode) {
  10. case 37:
  11. console.log('ctrl + ←')
  12. break
  13. case 38:
  14. console.log('ctrl + ↑')
  15. break
  16. case 39:
  17. console.log('ctrl + →')
  18. break
  19. case 40:
  20. console.log('ctrl + ↓')
  21. break
  22. case 67:
  23. console.log('ctrl + c')
  24. break
  25. case 83:
  26. console.log('ctrl + s')
  27. event.preventDefault()
  28. event.returnValue = false // 阻止直接保存网页
  29. // eslint-disable-next-line no-prototype-builtins
  30. if (event.ctrlKey && event.code === 'KeyS' && store.getters.forbidden.hasOwnProperty('ctrlS')) {
  31. // 在这里写保存需要执行的逻辑
  32. }
  33. if (event.ctrlKey && event.code === 'KeyS') return false
  34. break
  35. case 86:
  36. console.log('ctrl + v')
  37. break
  38. case 89:
  39. console.log('ctrl + y')
  40. if (event.ctrlKey && event.code === 'KeyY') {
  41. this.$router.go(+1)
  42. }
  43. break
  44. case 90:
  45. if (this.$route.path === '登录成功重定向的路由,比如控制台:/dashboard') return // 防止退出项目
  46. if (event.ctrlKey && event.code === 'KeyZ') {
  47. this.$router.go(-1)
  48. }
  49. break
  50. }
  51. }
  52. }

posted on 2022-08-09 23:25  sunny123456  阅读(1243)  评论(0编辑  收藏  举报