vue 의 touch Start 이벤트 및 click 이벤트 충돌 문제 해결
2948 단어 vuetouchStartclick충돌 하 다.
오늘 이러한 문제 가 발생 하면 어떤 요소 에 touch Start 와 click 이 벤트 를 동시에 연결 한 후 모 바 일 장치 에서 클릭 하면 이 두 이 벤트 를 순서대로 출발 합 니 다.모 바 일 장치 의 click 이벤트 트리거 는 300 ms 지연 되 기 때문에 touch Start 이벤트 가 먼저 트리거 된 후에 click 이 벤트 를 촉발 합 니 다.이렇게 해서 매번 두 번 씩 집행 해 야 한 다 는 것 은 무의미 하 다.PC 는 touch 관련 사건 을 식별 할 수 없다 는 것 을 알려 줍 니 다.
해결 방법
(1)preventDefault 방법
preventDefault 방법 을 사용 하여 해결 합 니 다.touch start 에 e.preventDefault()를 추가 하면 click 이벤트 의 촉발 을 막 을 수 있 습 니 다.
템 플 릿
<ul class="list">
<li class="item" v-for="item of letters"
:key="item"
:ref="item"
@touchstart="handleTouchStart"
@click="handleleterClick"
>{{item}}</li>
</ul>
위의 템 플 릿 은 vue 이벤트 수정자@touch start.stop.prevent 를 사용 하여 구현 할 수 있 지만,method 의 handle Touch Start 는 e.preventDefault()를 추가 하지 않 아 도 됩 니 다.
<ul class="list">
<li class="item" v-for="item of letters"
:key="item"
:ref="item"
@touchstart.stop.prevent="handleTouchStart"
@click="handleleterClick"
>{{item}}</li>
</ul>
methods: {
handleleterClick (e) {
console.log('click ')
this.$emit('change', e.target.innerText)
},
handleTouchStart (e) {
console.log('TouchStart ')
e.preventDefault()// click
this.touchStatus = true
}
}
}
e.preventDefault()이전 인쇄 결과 가 추가 되 지 않 았 습 니 다.e.preventDefault()를 추가 한 후 결 과 를 인쇄 합 니 다.
(2)브 라 우 저가 터치 스크린 이 벤트 를 지원 하 는 지 판단
"ontouchend"in document 을 통 해 브 라 우 저가 터치 스크린 이 벤트 를 지원 하 는 지 판단 합 니 다.터치 이 벤트 를 지원 하면 클릭 이 벤트 를 지원 하지 않 습 니 다.
<ul class="list">
<li class="item" v-for="item of letters"
:key="item"
:ref="item"
@click="handleSelfClick"
>{{item}}</li>
</ul>
methods: {
handleleterClick (e) {
console.log('click ')
this.$emit('change', e.target.innerText)
},
handleTouchStart (e) {
console.log('TouchStart ')
this.touchStatus = true
},
handleSelfClick (e) {
console.log('ontouchstart' in document)// touch 。
if ('ontouchstart' in document) {
this.handleTouchStart(e)
} else {
this.handleleterClick(e)
}
}
}
이상 vue 의 touch Start 사건 과 click 사건 의 충돌 문 제 를 해결 하 는 것 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.참고 하 실 수 있 고 많은 응원 부 탁 드 리 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Fastapi websocket 및 vue 3(Composition API)1부: FastAPI virtualenv 만들기(선택 사항) FastAPI 및 필요한 모든 것을 다음과 같이 설치하십시오. 생성main.py 파일 및 실행 - 브라우저에서 이 링크 열기http://127.0.0.1:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.