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