瀏覽代碼

fix error with removal of control button and progress bar event listeners (closes #323)

Hakim El Hattab 12 年之前
父節點
當前提交
9b830131f7
共有 2 個文件被更改,包括 28 次插入32 次删除
  1. 27 31
      js/reveal.js
  2. 1 1
      js/reveal.min.js

+ 27 - 31
js/reveal.js

@@ -404,17 +404,17 @@ var Reveal = (function(){
 		}
 
 		if ( config.progress && dom.progress ) {
-			dom.progress.addEventListener( 'click', preventAndForward( onProgressClick ), false );
+			dom.progress.addEventListener( 'click', onProgressClicked, false );
 		}
 
 		if ( config.controls && dom.controls ) {
 			var actionEvent = 'ontouchstart' in window ? 'touchstart' : 'click';
-			dom.controlsLeft.forEach( function( el ) { el.addEventListener( actionEvent, preventAndForward( navigateLeft ), false ); } );
-			dom.controlsRight.forEach( function( el ) { el.addEventListener( actionEvent, preventAndForward( navigateRight ), false ); } );
-			dom.controlsUp.forEach( function( el ) { el.addEventListener( actionEvent, preventAndForward( navigateUp ), false ); } );
-			dom.controlsDown.forEach( function( el ) { el.addEventListener( actionEvent, preventAndForward( navigateDown ), false ); } );
-			dom.controlsPrev.forEach( function( el ) { el.addEventListener( actionEvent, preventAndForward( navigatePrev ), false ); } );
-			dom.controlsNext.forEach( function( el ) { el.addEventListener( actionEvent, preventAndForward( navigateNext ), false ); } );
+			dom.controlsLeft.forEach( function( el ) { el.addEventListener( actionEvent, onNavigateLeftClicked, false ); } );
+			dom.controlsRight.forEach( function( el ) { el.addEventListener( actionEvent, onNavigateRightClicked, false ); } );
+			dom.controlsUp.forEach( function( el ) { el.addEventListener( actionEvent, onNavigateUpClicked, false ); } );
+			dom.controlsDown.forEach( function( el ) { el.addEventListener( actionEvent, onNavigateDownClicked, false ); } );
+			dom.controlsPrev.forEach( function( el ) { el.addEventListener( actionEvent, onNavigatePrevClicked, false ); } );
+			dom.controlsNext.forEach( function( el ) { el.addEventListener( actionEvent, onNavigateNextClicked, false ); } );
 		}
 
 	}
@@ -435,17 +435,17 @@ var Reveal = (function(){
 		}
 
 		if ( config.progress && dom.progress ) {
-			dom.progress.removeEventListener( 'click', preventAndForward( onProgressClick ), false );
+			dom.progress.removeEventListener( 'click', onProgressClicked, false );
 		}
 
 		if ( config.controls && dom.controls ) {
 			var actionEvent = 'ontouchstart' in window ? 'touchstart' : 'click';
-			dom.controlsLeft.forEach( function( el ) { el.removeEventListener( actionEvent, preventAndForward( navigateLeft ), false ); } );
-			dom.controlsRight.forEach( function( el ) { el.removeEventListener( actionEvent, preventAndForward( navigateRight ), false ); } );
-			dom.controlsUp.forEach( function( el ) { el.removeEventListener( actionEvent, preventAndForward( navigateUp ), false ); } );
-			dom.controlsDown.forEach( function( el ) { el.removeEventListener( actionEvent, preventAndForward( navigateDown ), false ); } );
-			dom.controlsPrev.forEach( function( el ) { el.removeEventListener( actionEvent, preventAndForward( navigatePrev ), false ); } );
-			dom.controlsNext.forEach( function( el ) { el.removeEventListener( actionEvent, preventAndForward( navigateNext ), false ); } );
+			dom.controlsLeft.forEach( function( el ) { el.removeEventListener( actionEvent, onNavigateLeftClicked, false ); } );
+			dom.controlsRight.forEach( function( el ) { el.removeEventListener( actionEvent, onNavigateRightClicked, false ); } );
+			dom.controlsUp.forEach( function( el ) { el.removeEventListener( actionEvent, onNavigateUpClicked, false ); } );
+			dom.controlsDown.forEach( function( el ) { el.removeEventListener( actionEvent, onNavigateDownClicked, false ); } );
+			dom.controlsPrev.forEach( function( el ) { el.removeEventListener( actionEvent, onNavigatePrevClicked, false ); } );
+			dom.controlsNext.forEach( function( el ) { el.removeEventListener( actionEvent, onNavigateNextClicked, false ); } );
 		}
 
 	}
@@ -487,22 +487,6 @@ var Reveal = (function(){
 
 	}
 
-	/**
-	 * Prevents an events defaults behavior calls the
-	 * specified delegate.
-	 *
-	 * @param {Function} delegate The method to call
-	 * after the wrapper has been executed
-	 */
-	function preventAndForward( delegate ) {
-
-		return function( event ) {
-			event.preventDefault();
-			delegate.call( null, event );
-		};
-
-	}
-
 	/**
 	 * Causes the address bar to hide on mobile devices,
 	 * more vertical space ftw.
@@ -1733,7 +1717,9 @@ var Reveal = (function(){
 	 *
 	 * ( clickX / presentationWidth ) * numberOfSlides
 	 */
-	function onProgressClick( event ) {
+	function onProgressClicked( event ) {
+
+		event.preventDefault();
 
 		var slidesTotal = toArray( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ).length;
 		var slideIndex = Math.floor( ( event.clientX / dom.wrapper.offsetWidth ) * slidesTotal );
@@ -1742,6 +1728,16 @@ var Reveal = (function(){
 
 	}
 
+	/**
+	 * Event handles for navigation control buttons.
+	 */
+	function onNavigateLeftClicked( event ) { event.preventDefault(); navigateLeft(); }
+	function onNavigateRightClicked( event ) { event.preventDefault(); navigateRight(); }
+	function onNavigateUpClicked( event ) { event.preventDefault(); navigateUp(); }
+	function onNavigateDownClicked( event ) { event.preventDefault(); navigateDown(); }
+	function onNavigatePrevClicked( event ) { event.preventDefault(); navigatePrev(); }
+	function onNavigateNextClicked( event ) { event.preventDefault(); navigateNext(); }
+
 	/**
 	 * Handler for the window level 'hashchange' event.
 	 */

文件差異過大導致無法顯示
+ 1 - 1
js/reveal.min.js


部分文件因文件數量過多而無法顯示