| New file | 
 |  |  | 
 |  |  | // #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 |