| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 | | // #ifdef H5 |  | export default { |  |   name: 'Keypress', |  |   props: { |  |     disable: { |  |       type: Boolean, |  |       default: false |  |     } |  |   }, |  |   mounted () { |  |     const keyNames = { |  |       esc: ['Esc', 'Escape'], |  |       tab: 'Tab', |  |       enter: 'Enter', |  |       space: [' ', 'Spacebar'], |  |       up: ['Up', 'ArrowUp'], |  |       left: ['Left', 'ArrowLeft'], |  |       right: ['Right', 'ArrowRight'], |  |       down: ['Down', 'ArrowDown'], |  |       delete: ['Backspace', 'Delete', 'Del'] |  |     } |  |     const listener = ($event) => { |  |       if (this.disable) { |  |         return |  |       } |  |       const keyName = Object.keys(keyNames).find(key => { |  |         const keyName = $event.key |  |         const value = keyNames[key] |  |         return value === keyName || (Array.isArray(value) && value.includes(keyName)) |  |       }) |  |       if (keyName) { |  |         // 避免和其他按键事件冲突 |  |         setTimeout(() => { |  |           this.$emit(keyName, {}) |  |         }, 0) |  |       } |  |     } |  |     document.addEventListener('keyup', listener) |  |     // this.$once('hook:beforeDestroy', () => { |  |     //   document.removeEventListener('keyup', listener) |  |     // }) |  |   }, |  |     render: () => {} |  | } |  | // #endif | 
 |