You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							45 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							45 lines
						
					
					
						
							1.1 KiB
						
					
					
				| // #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
 | |
| 
 |