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
|
|