From d237c22fc07e59d32ccb5b6d90ecb6bdefa3bfb2 Mon Sep 17 00:00:00 2001 From: Hakim El Hattab Date: Tue, 5 Mar 2013 09:47:08 -0500 Subject: blindfolded attempt at ie10 touch (#300) --- js/reveal.js | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) (limited to 'js/reveal.js') diff --git a/js/reveal.js b/js/reveal.js index a4187e7..bdc7a53 100644 --- a/js/reveal.js +++ b/js/reveal.js @@ -419,6 +419,13 @@ var Reveal = (function(){ dom.wrapper.addEventListener( 'touchstart', onTouchStart, false ); dom.wrapper.addEventListener( 'touchmove', onTouchMove, false ); dom.wrapper.addEventListener( 'touchend', onTouchEnd, false ); + + // Support pointer-style touch interaction as well + if( window.navigator.msPointerEnabled ) { + dom.wrapper.addEventListener( 'MSPointerDown', onPointerDown, false ); + dom.wrapper.addEventListener( 'MSPointerMove', onPointerMove, false ); + dom.wrapper.addEventListener( 'MSPointerUp', onPointerUp, false ); + } } if( config.keyboard ) { @@ -457,6 +464,12 @@ var Reveal = (function(){ dom.wrapper.removeEventListener( 'touchstart', onTouchStart, false ); dom.wrapper.removeEventListener( 'touchmove', onTouchMove, false ); dom.wrapper.removeEventListener( 'touchend', onTouchEnd, false ); + + if( window.navigator.msPointerEnabled ) { + dom.wrapper.removeEventListener( 'MSPointerDown', onPointerDown, false ); + dom.wrapper.removeEventListener( 'MSPointerMove', onPointerMove, false ); + dom.wrapper.removeEventListener( 'MSPointerUp', onPointerUp, false ); + } } if ( config.progress && dom.progress ) { @@ -1803,6 +1816,42 @@ var Reveal = (function(){ } + /** + * Convert pointer down to touch start. + */ + function onPointerDown( event ) { + + if( event.pointerType === event.MSPOINTER_TYPE_TOUCH ) { + event.touches = [{ clientX: event.clientX, clientY: event.clientY }]; + this.onTouchStart( event ); + } + + } + + /** + * Convert pointer move to touch move. + */ + function onPointerMove( event ) { + + if( event.pointerType === event.MSPOINTER_TYPE_TOUCH ) { + event.touches = [{ clientX: event.clientX, clientY: event.clientY }]; + this.onTouchMove( event ); + } + + } + + /** + * Convert pointer up to touch end. + */ + function onPointerUp( event ) { + + if( event.pointerType === event.MSPOINTER_TYPE_TOUCH ) { + event.touches = [{ clientX: event.clientX, clientY: event.clientY }]; + this.onTouchEnd( event ); + } + + } + /** * Handles mouse wheel scrolling, throttled to avoid skipping * multiple slides. -- cgit v1.2.3