最近项目里面有个需求:点击小图全屏展示大图,然后用户点击右上角的X
按钮或者直接按ESC
退出大图模式。
点击小图全屏展示大图和按x关闭大图都很容易实现,但是监听esc的事件费了点事件,最开始是这么写的
1 2 3 4
| <div class="viewLargerImageContainer" @keyup.27='escEvent'> <span class="el-icon-circle-close-outline close-icon" @click="$emit('closeImg')"></span> <img :src="imgSrc" ref='largerImg'> </div>
|
然而并没有奏效,因为@keyup
这样的写法似乎只能在input
这样的输入框里面执行,于是百度到KeyboardEvent,解决了问题。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <div class="viewLargerImageContainer"> <span class="el-icon-circle-close-outline close-icon" @click="$emit('closeImg')"></span> <img :src="imgSrc" ref='largerImg'> </div>
mounted() { this.escEvent(); },
methods: { escEvent() { document.addEventListener('keyup', (event) => { const keyName = event.key; if (keyName === 'Escape') { this.$emit('closeImg'); } }); } }
|