반응형
모바일에서는 터치 관련 이벤트가 click, mouseup 등이 아닌 touchstart, touchend 류로 들어옴. 그래서 이에 맞게 타입 처리를 해줬는데 instanceof로 타입 체크를 하는 도중에 TouchEvent가 아니라고 뱉어버리는 경우가 있음.
원인은
- 브라우저 문제
- touchstart이벤트인데 이벤트핸들러를 click으로 해버림
- 타입 추론을 명시적으로 안해줌
라고 하는데 아니 나 다 제대로 했다고~~~~~~
아무튼 타입이 뭐든 값은 제대로 나와줬으면 해서 type값을 직접 비교해서 clientX와 같은 좌표를 뽑아내고 있음.
const getClientX = (event: MouseEvent | TouchEvent) => {
if (event.type == 'touchend') {
return (event as TouchEvent).changedTouches[0]?.clientX
}
}
이렇게ㅇㅇ 참고로 touchstart, move일때는 event.touches[0].clientX임.
'Javascript' 카테고리의 다른 글
[javascript] setTimeout을 clearTimeout할 때 (0) | 2024.07.01 |
---|---|
[javascript] addEventListener 이벤트 중복 막기 (0) | 2024.06.12 |
[iOS] 아이폰,아이패드에서 간헐적으로 audio 안나올 때 (0) | 2024.05.24 |
input에서 enter쳤는데 두번 실행될 때 (0) | 2024.02.22 |
[vscode] 간편한 snippet 등록하기 (0) | 2024.02.01 |