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