2014-02-06 2 views
1

백본 앱이 있고 Modernizr을 사용하고 있습니다.터치 이벤트 : 클릭과 다르게 스 와이프를 처리 하시겠습니까?

터치 장치에서는 터치 이벤트가 일반적인 페이지 스크롤이 아닌 백본 수신기와 일련의 복잡한 이벤트를 트리거하기 때문에 터치 장치에서 페이지를 스 와이프하여 스크롤 할 수 없습니다.

이 내 코드입니다 :

그 슬쩍 정상으로 페이지를 이동하는 사용자 수 있도록 내가 클릭에서 슬쩍을 구별하기 위해 사용되어야한다 무엇 이벤트
events: function() { 
    if (this.modernizr.touch) { 
    return { 
     'touchstart .hover': 'onTouchStart' 
    }; 
    } else { 
    return { 
     'mousemove .hover': 'onMouseMove' 
    }; 
    } 
} 
// onTouchStart and onMouseMove both fire a listener 

? (터치 장치로 쉽게 테스트 할 수 없습니다. 게으른 질문이 아닙니다.)

답변

0

onTouchStart 함수는 event.preventDefault()으로 호출합니까? 그렇다면 기본 스 와이프 - 스크롤 동작을 트리거하는 이벤트가 중지됩니다. 해당 통화를 삭제하면 사용자가 정상적으로 스크롤 할 수 있습니다.

This HTML5 Rocks article은 터치 이벤트가 전파/캐스케이드되는 방식에 대해 자세히 설명합니다.


사이드 노트 : 당신이 여기에 사용한 패턴은 IMO 약간 위험한 가정합니다 : Modernizr.touchfalse, 하이브리드 장치 (있는 사용자 인 경우에만 마우스 이벤트를 결합함으로써

  • 을 터치 할 수 랩톱 등)는 마우스/트랙 패드를 사용할 수 없습니다. 왜 두 가지 사건을 묶는 것이 아닌가?
  • 일부 브라우저/기기는 또는mousemove (키보드 사용자, Windows 스마트 폰 등)을 사용할 수 없으므로이 기능을 사용할 수 없습니다. 당신이 click 이벤트 너무 대체로 결합하는 경우, 당신은 그들이 당신이 관심이 있다면 내가 최근 wrote an article 나는 "황금 패턴"을 고려 것에 대해, 모든 사태를 다루

덮여있을 것입니다.

물론 이러한 핸들러가 제공하는 기능이 중요하지 않은 경우에는 이러한 것들이 문제가되지 않을 수도 있습니다.

관련 문제