2 回答
TA贡献1812条经验 获得超5个赞
MouseEvent当输入设备被触摸时,侦听器不会被触发,但TouchEvent侦听PointerEvent器会被触发。
PointerEvent是现在推荐的方式,因为它涵盖了所有输入设备,包括鼠标和触摸:
<button
v-if="!videoIsPlaying"
@pointerdown="playVideo()"
></button>
长按阅读:
<template>
<button
@pointerdown="isHolding = true"
@pointerup="isHolding = false"
></button>
</template>
<script setup>
import { ref } from 'vue';
const isHolding = ref(false);
</script>
它们每个都有与 MouseEvent API 相似的事件,即touchstart
= mousedown
。
我个人发现 TouchEvents 比 PointerEvents 更好,但是,您可能需要进行一些测试才能确定哪种最适合您的情况。
因此,正如您对 Vue 所猜测的那样,您可以使用@touchstart:
<button
v-if="!videoIsPlaying"
@click="playVideo()"
@mousedown="playVideo()"
@touchstart="playVideo()"
/>
如果您想将其确定为长按,则必须在 上存储一个值touchstart并在 上更改它touchend:
<button
@touchstart="touching = true"
@touchend="touching = false"
/>
...
data() {
return {
touching: false
}
}
添加回答
举报