2014-11-17 5 views
1

HammerJS에서 수동으로 이벤트를 실행하려고했지만 현재 진행 상황을 볼 수 없습니다. 또한 버전 1의 HammerJS 문서 wiki 링크가 있습니다.HammerJS 2.0에서 이벤트를 수동으로 트리거

HammerJS 2.0을 사용하여 수동으로 이벤트를 발생시키는 방법을 알려줄 수 있습니까?

답변

0

이것은 HammerJS tests이 터치 이벤트를 발생시키는 방법입니다.

dispatchTouchEvent(element, 'start', 50, 50); 
dispatchTouchEvent(element, 'end', 50, 50); 

또는 팬 :

function createTouchEvent (name, x, y, identifier) { 
    var event = document.createEvent('Event'); 
    event.initEvent('touch' + name, true, true); 

    event.touches = event.targetTouches = [{ 
     clientX: x, 
     clientY: y, 
     identifier: identifier || 0 
    }]; 

    //https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.changedTouches 
    event.changedTouches = [{ 
     clientX: x, 
     clientY: y, 
     identifier: identifier || 0 
    }]; 

    return event; 
} 

function dispatchTouchEvent (el, name, x, y, identifier) { 
    var event = createTouchEvent(name, x, y, identifier); 
    el.dispatchEvent(event); 
} 

당신은 예를 들어 탭을 해고 할 수

dispatchTouchEvent(element, 'start', 50, 50); 
dispatchTouchEvent(element, 'move', 70, 50); 
dispatchTouchEvent(element, 'end', 70, 50); 
+0

당신이 개발, 그래서 만약이 아닌 터치 장치에서 작동하지 않는 나타납니다 그런 다음 터치 스크린 컴퓨터에서 단위 테스트를 수행 한 다음 비 터치 시스템에서 실행하면 해머가 절대로 이벤트를 볼 수 없습니다. 적어도 이것이 Chrome에서보고있는 상황입니다. (아직 PhantomJS에서는 정상적으로 작동하는 것 같습니다.) – Aardvark

+0

@Aardvark [HammerJS 테스트] (https://github.com/hammerjs/hammer.js/tree/master/tests)를 실행 해 보았습니까? 그들은 동일한 코드를 사용합니다. – Guglie

+0

문제는 Hammer에 내장 된 기능 감지로 인해 실행중인 브라우저/컴퓨터에서 지원되는 이벤트 만 수신하는 InputClass가 생성된다는 것이 었습니다. 변경하지 않으면 마우스 입력 만 감지 할 수 있습니다. Hammer 생성자 (Hammer.TouchMouseInput)에 입력 클래스를 지정하여이 기능 감지를 건너 뜁니다. 테스트 도중이 작업을 수행하면 Hammer는 입력 클래스 인 TouchMouseInput이 모든 시스템에서 내 시뮬레이션 된 터치 이벤트를 '인식'합니다. Hammer의 단위 테스트가 기능 탐지를 우회하거나 조작하여 모든 포인터 입력 유형을 처리 할 수 ​​있다고 의심됩니다. – Aardvark