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