2014-12-04 23 views
2

Mac의 트랙 패드에서 탭핑을 처리 할 수있는 방법이 있습니까?자바 스크립트/jquery의 트랙 패드 탭 이벤트

특히 트랙 패드에서 '탭'및 '클릭'을 처리해야합니다.

내가 작동하지 않았다
$.event.special.tap = { 
    setup: function(data, namespaces) { 
     var $elem = $(this); 
     $elem.bind('touchstart', $.event.special.tap.handler) 
      .bind('touchmove', $.event.special.tap.handler) 
      .bind('touchend', $.event.special.tap.handler); 
    }, 

    teardown: function(namespaces) { 
     var $elem = $(this); 
     $elem.unbind('touchstart', $.event.special.tap.handler) 
      .unbind('touchmove', $.event.special.tap.handler) 
      .unbind('touchend', $.event.special.tap.handler); 
    }, 

    handler: function(event) { 
     event.preventDefault(); 
     var $elem = $(this); 
     $elem.data(event.type, 1); 
     if (event.type === 'touchend' && !$elem.data('touchmove')) { 
      event.type = 'tap'; 
      $.event.handle.apply(this, arguments); 
     } else if ($elem.data('touchend')) { 
      $elem.removeData('touchstart touchmove touchend'); 
     } 
    } 
}; 

$('.thumb img').bind('tap', function() { 
    //bind tap event to an img tag with the class thumb 
} 

을 시도했다.

트랙 패드에서 탭 이벤트를 캡처하는 방법은 무엇입니까?

답변

1

나는 이와 같은 우려를 가지고 있습니다. MacBook의 트랙 패드 (예 :)는 실제 터치 장치처럼 TouchEvents를 실행하지 않습니다. 대신 제스처를 MouseEvents로 변환합니다. 나는 트랙 패드에서 "핀치/줌"제스처를 캡처 할 때 내가 CTRL을 누르고 다음 스크롤했던 것처럼 위의 예에서

document.addEventListener('mousewheel', function(e) { 
    console.log(e.wheelDelta); 
}); 

document.addEventListener('touchstart', function(e) { 
    console.log(e); 
}); 

는 사실 스크롤 휠에서 델타를 다시 받고 있어요 wheelDelta 값을 120 또는 -120으로 반환합니다. 태블릿이나 스마트 폰과 같은 터치 장치에 있지 않는 한 '터치 스타트'에 대한 이벤트 리스너를 켜기 만하면 콘솔에 쓰지 않습니다.

물론, MackBook은 트랙 패드를 터치 한 시점을 감지 할 수 있기 때문에 움직임을 감지 할 수 있지만 문서를 통해 사용할 수있는 것으로 보이지는 않습니다.