기본 콘텐츠로 건너뛰기

html click 이벤트가 모바일에선 300ms가 느리다!!?

안녕하세요 광흠입니다.


이번 포스팅은 "html 클릭 이벤트가 모바일에선 왜 느릴까?" 주제로 하겠습니다




일단 동영상을 한번 시청해보시면 차이를 아실거라 생각이 듭니다
(youtube에서 찾은 비교 영상입니다.)

왼쪽은 일반 click이벤트이고 우측이 touch 영상입니다.

육안으로도 확연히 차이가 심합니다.

자료를 찾아보니 모바일에서는 더블탭이 될지도 모르기 때문에 300ms를 대기 시간으로 둔다더군요 그래서 모바일에선 touch 이벤트가 존재합니다

종류는 아래 보시면 되겠습니다


  1. touchstart (스크린에 손가락이 닿았을때 발생한다)
  2. touchmove (스크린에 손가락이 닿아있고 움직일때 발생한다)
  3. touchend (스크린에서 손가락이 떨어졌을 경우 발생한다)
  4. touchcancel (시스템에서 이벤트를 취소시킬 때 발생하지만 브라우저마다 다르다)


이렇게 이벤트를 사용하여 반응형 웹 또는 모바일 웹을 제작할때 touch이벤트를 잘 사용하도록 하자.

여기서 주의할 점은 touch이벤트를 사용할때 컴퓨터의 웹에선 동작하지 않습니다.

그래서 click이벤트와 같이 사용을 해주셔야하는데요


1
2
3
4
5
6
7
8
9
10
11
12
13
//모바일에서 touch이벤트와 click이벤트가 같이 발생할때 click을 취소하는 펑션입니다.
function eventHandler(event, selector) {//
    event.stopPropagation();
    event.preventDefault();
    if (event.type === 'touchend'){
        selector.off('click');
    }
}
//위의 평션은 이렇게 이벤트와 element를 넘겨주시면 되겠습니다.
$(selector).on('touchend click'function(event) {
    eventHandler(event, $(this));
    nextMenu();
});


이상으로 포스팅을 마치겠습니다 ^^

감사합니다.

댓글

이 블로그의 인기 게시물

Intellij에서 Eclipse 프로젝트 import시 설정해줘야 할 것들

요즘 여유가 좀 생겨서 지금까지 Eclipse만 쓰다가 사람들이 하도 Intellij가 좋다하길래 얼마나 좋길래 하고 써보려고 하다가 프로젝트를 import 시키던중 좀 적어두면 좋을거같아서 적어보려고한다 !! 다음에 잊지 않기 위해... 1. Settings > Build, Execution, Deployment > Compiler > Java Compiler 버전 맞추기 2. 상단에 설정 추가 하는부분을 눌러 톰켓을 생성해준다. 꼭 넣어줘야할 부분은 VM options에  -Dfile.encoding=utf-8  한글 깨짐 방지다. (그리고 intellij 설치 된 곳에 bin폴더 안에 vmoptions 확장자를 갖은 녀석의 맨 마지막 줄에도 넣어준다!) 3. project structure > Project Settings > Project 그리고 java버전에 맞춰서 project language level도 맞춰줘야합니다! 4. project structure > Project Settings > Modules - Sources 여기도 project language level도 맞춰줘야합니다! 5. project structure > Project Settings > Modules - Dependencies 들어가서 + 단추를 누르고 Library..를 누르고 Tomcat 추가! 이러면 이클립스에서 갖고온 프로젝트가 잘 동작합니다!! 아 그리고 .settings, .classpath, .project 는 필요 없어지므로 삭제해도 무방합니다 ps. 사실... 이클립스 쓰면서 불편한건 하나도 없었어요... 그리고 아직은 단축키라던지 익숙하지 않아서 이클립스가 더 편하네요... 사실 이클립스 단축키를 인텔리제이와 동일하게 할 수 있지만.... 인텔리제이의 기본 설정만 써...

Ext JS 4.2 트리 노드 추가 및 스크롤 이동

Ext.require([ '*' ]); Ext.onReady( function (){      var addButton = Ext.create( 'Ext.Button' , {         text: '노드 추가(Add Node)' ,         scale: 'large' ,         listeners: {         el: {             click: function () {          var thisNode =  Ext.getCmp( 'xAxisTreeUse' ).getRootNode().appendChild({                      "text":"노드 이름 (Node name) "         });                 Ext.getCmp( " tree " ).selectPath(thisNode.getPath());             }         }     });      var   store = Ext.create( 'Ext.data.TreeStore' , {             id:  'store' ,     ...