fix: links not working when controls are disabled
authorThomas Geier <thomas.geier@uni-ulm.de>
Tue, 3 Sep 2013 09:10:05 +0000 (11:10 +0200)
committerThomas Geier <thomas.geier@uni-ulm.de>
Tue, 3 Sep 2013 09:10:05 +0000 (11:10 +0200)
js/reveal.js

index c7860adcfb37ae36c713bb4ca0a4d951663c6e93..c2a8a3e26aa7bf2a333540909ec6ebd359c6b3aa 100644 (file)
@@ -353,17 +353,15 @@ var Reveal = (function(){
                createSingletonNode( dom.wrapper, 'div', 'pause-overlay', null );
 
                // Cache references to elements
-               if ( config.controls ) {
-                       dom.controls = document.querySelector( '.reveal .controls' );
+               dom.controls = document.querySelector( '.reveal .controls' );
 
-                       // There can be multiple instances of controls throughout the page
-                       dom.controlsLeft = toArray( document.querySelectorAll( '.navigate-left' ) );
-                       dom.controlsRight = toArray( document.querySelectorAll( '.navigate-right' ) );
-                       dom.controlsUp = toArray( document.querySelectorAll( '.navigate-up' ) );
-                       dom.controlsDown = toArray( document.querySelectorAll( '.navigate-down' ) );
-                       dom.controlsPrev = toArray( document.querySelectorAll( '.navigate-prev' ) );
-                       dom.controlsNext = toArray( document.querySelectorAll( '.navigate-next' ) );
-               }
+               // There can be multiple instances of controls throughout the page
+               dom.controlsLeft = toArray( document.querySelectorAll( '.navigate-left' ) );
+               dom.controlsRight = toArray( document.querySelectorAll( '.navigate-right' ) );
+               dom.controlsUp = toArray( document.querySelectorAll( '.navigate-up' ) );
+               dom.controlsDown = toArray( document.querySelectorAll( '.navigate-down' ) );
+               dom.controlsPrev = toArray( document.querySelectorAll( '.navigate-prev' ) );
+               dom.controlsNext = toArray( document.querySelectorAll( '.navigate-next' ) );
 
        }
 
@@ -491,9 +489,7 @@ var Reveal = (function(){
                dom.wrapper.setAttribute( 'data-transition-speed', config.transitionSpeed );
                dom.wrapper.setAttribute( 'data-background-transition', config.backgroundTransition );
 
-               if( dom.controls ) {
-                       dom.controls.style.display = ( config.controls && dom.controls ) ? 'block' : 'none';
-               }
+               dom.controls.style.display = ( config.controls && dom.controls ) ? 'block' : 'none';
 
                if( dom.progress ) {
                        dom.progress.style.display = ( config.progress && dom.progress ) ? 'block' : 'none';
@@ -586,16 +582,14 @@ var Reveal = (function(){
                        dom.progress.addEventListener( 'click', onProgressClicked, false );
                }
 
-               if ( config.controls && dom.controls ) {
-                       [ 'touchstart', 'click' ].forEach( function( eventName ) {
-                               dom.controlsLeft.forEach( function( el ) { el.addEventListener( eventName, onNavigateLeftClicked, false ); } );
-                               dom.controlsRight.forEach( function( el ) { el.addEventListener( eventName, onNavigateRightClicked, false ); } );
-                               dom.controlsUp.forEach( function( el ) { el.addEventListener( eventName, onNavigateUpClicked, false ); } );
-                               dom.controlsDown.forEach( function( el ) { el.addEventListener( eventName, onNavigateDownClicked, false ); } );
-                               dom.controlsPrev.forEach( function( el ) { el.addEventListener( eventName, onNavigatePrevClicked, false ); } );
-                               dom.controlsNext.forEach( function( el ) { el.addEventListener( eventName, onNavigateNextClicked, false ); } );
-                       } );
-               }
+               [ 'touchstart', 'click' ].forEach( function( eventName ) {
+                       dom.controlsLeft.forEach( function( el ) { el.addEventListener( eventName, onNavigateLeftClicked, false ); } );
+                       dom.controlsRight.forEach( function( el ) { el.addEventListener( eventName, onNavigateRightClicked, false ); } );
+                       dom.controlsUp.forEach( function( el ) { el.addEventListener( eventName, onNavigateUpClicked, false ); } );
+                       dom.controlsDown.forEach( function( el ) { el.addEventListener( eventName, onNavigateDownClicked, false ); } );
+                       dom.controlsPrev.forEach( function( el ) { el.addEventListener( eventName, onNavigatePrevClicked, false ); } );
+                       dom.controlsNext.forEach( function( el ) { el.addEventListener( eventName, onNavigateNextClicked, false ); } );
+               } );
 
        }
 
@@ -624,16 +618,14 @@ var Reveal = (function(){
                        dom.progress.removeEventListener( 'click', onProgressClicked, false );
                }
 
-               if ( config.controls && dom.controls ) {
-                       [ 'touchstart', 'click' ].forEach( function( eventName ) {
-                               dom.controlsLeft.forEach( function( el ) { el.removeEventListener( eventName, onNavigateLeftClicked, false ); } );
-                               dom.controlsRight.forEach( function( el ) { el.removeEventListener( eventName, onNavigateRightClicked, false ); } );
-                               dom.controlsUp.forEach( function( el ) { el.removeEventListener( eventName, onNavigateUpClicked, false ); } );
-                               dom.controlsDown.forEach( function( el ) { el.removeEventListener( eventName, onNavigateDownClicked, false ); } );
-                               dom.controlsPrev.forEach( function( el ) { el.removeEventListener( eventName, onNavigatePrevClicked, false ); } );
-                               dom.controlsNext.forEach( function( el ) { el.removeEventListener( eventName, onNavigateNextClicked, false ); } );
-                       } );
-               }
+               [ 'touchstart', 'click' ].forEach( function( eventName ) {
+                       dom.controlsLeft.forEach( function( el ) { el.removeEventListener( eventName, onNavigateLeftClicked, false ); } );
+                       dom.controlsRight.forEach( function( el ) { el.removeEventListener( eventName, onNavigateRightClicked, false ); } );
+                       dom.controlsUp.forEach( function( el ) { el.removeEventListener( eventName, onNavigateUpClicked, false ); } );
+                       dom.controlsDown.forEach( function( el ) { el.removeEventListener( eventName, onNavigateDownClicked, false ); } );
+                       dom.controlsPrev.forEach( function( el ) { el.removeEventListener( eventName, onNavigatePrevClicked, false ); } );
+                       dom.controlsNext.forEach( function( el ) { el.removeEventListener( eventName, onNavigateNextClicked, false ); } );
+               } );
 
        }
 
@@ -1792,50 +1784,46 @@ var Reveal = (function(){
         */
        function updateControls() {
 
-               if ( config.controls && dom.controls ) {
-
-                       var routes = availableRoutes();
-                       var fragments = availableFragments();
-
-                       // Remove the 'enabled' class from all directions
-                       dom.controlsLeft.concat( dom.controlsRight )
-                                                       .concat( dom.controlsUp )
-                                                       .concat( dom.controlsDown )
-                                                       .concat( dom.controlsPrev )
-                                                       .concat( dom.controlsNext ).forEach( function( node ) {
-                               node.classList.remove( 'enabled' );
-                               node.classList.remove( 'fragmented' );
-                       } );
+               var routes = availableRoutes();
+               var fragments = availableFragments();
+
+               // Remove the 'enabled' class from all directions
+               dom.controlsLeft.concat( dom.controlsRight )
+                                               .concat( dom.controlsUp )
+                                               .concat( dom.controlsDown )
+                                               .concat( dom.controlsPrev )
+                                               .concat( dom.controlsNext ).forEach( function( node ) {
+                       node.classList.remove( 'enabled' );
+                       node.classList.remove( 'fragmented' );
+               } );
 
-                       // Add the 'enabled' class to the available routes
-                       if( routes.left ) dom.controlsLeft.forEach( function( el ) { el.classList.add( 'enabled' );     } );
-                       if( routes.right ) dom.controlsRight.forEach( function( el ) { el.classList.add( 'enabled' ); } );
-                       if( routes.up ) dom.controlsUp.forEach( function( el ) { el.classList.add( 'enabled' ); } );
-                       if( routes.down ) dom.controlsDown.forEach( function( el ) { el.classList.add( 'enabled' ); } );
+               // Add the 'enabled' class to the available routes
+               if( routes.left ) dom.controlsLeft.forEach( function( el ) { el.classList.add( 'enabled' );     } );
+               if( routes.right ) dom.controlsRight.forEach( function( el ) { el.classList.add( 'enabled' ); } );
+               if( routes.up ) dom.controlsUp.forEach( function( el ) { el.classList.add( 'enabled' ); } );
+               if( routes.down ) dom.controlsDown.forEach( function( el ) { el.classList.add( 'enabled' ); } );
 
-                       // Prev/next buttons
-                       if( routes.left || routes.up ) dom.controlsPrev.forEach( function( el ) { el.classList.add( 'enabled' ); } );
-                       if( routes.right || routes.down ) dom.controlsNext.forEach( function( el ) { el.classList.add( 'enabled' ); } );
+               // Prev/next buttons
+               if( routes.left || routes.up ) dom.controlsPrev.forEach( function( el ) { el.classList.add( 'enabled' ); } );
+               if( routes.right || routes.down ) dom.controlsNext.forEach( function( el ) { el.classList.add( 'enabled' ); } );
 
-                       // Highlight fragment directions
-                       if( currentSlide ) {
+               // Highlight fragment directions
+               if( currentSlide ) {
 
-                               // Always apply fragment decorator to prev/next buttons
-                               if( fragments.prev ) dom.controlsPrev.forEach( function( el ) { el.classList.add( 'fragmented', 'enabled' ); } );
-                               if( fragments.next ) dom.controlsNext.forEach( function( el ) { el.classList.add( 'fragmented', 'enabled' ); } );
+                       // Always apply fragment decorator to prev/next buttons
+                       if( fragments.prev ) dom.controlsPrev.forEach( function( el ) { el.classList.add( 'fragmented', 'enabled' ); } );
+                       if( fragments.next ) dom.controlsNext.forEach( function( el ) { el.classList.add( 'fragmented', 'enabled' ); } );
 
-                               // Apply fragment decorators to directional buttons based on
-                               // what slide axis they are in
-                               if( isVerticalSlide( currentSlide ) ) {
-                                       if( fragments.prev ) dom.controlsUp.forEach( function( el ) { el.classList.add( 'fragmented', 'enabled' ); } );
-                                       if( fragments.next ) dom.controlsDown.forEach( function( el ) { el.classList.add( 'fragmented', 'enabled' ); } );
-                               }
-                               else {
-                                       if( fragments.prev ) dom.controlsLeft.forEach( function( el ) { el.classList.add( 'fragmented', 'enabled' ); } );
-                                       if( fragments.next ) dom.controlsRight.forEach( function( el ) { el.classList.add( 'fragmented', 'enabled' ); } );
-                               }
+                       // Apply fragment decorators to directional buttons based on
+                       // what slide axis they are in
+                       if( isVerticalSlide( currentSlide ) ) {
+                               if( fragments.prev ) dom.controlsUp.forEach( function( el ) { el.classList.add( 'fragmented', 'enabled' ); } );
+                               if( fragments.next ) dom.controlsDown.forEach( function( el ) { el.classList.add( 'fragmented', 'enabled' ); } );
+                       }
+                       else {
+                               if( fragments.prev ) dom.controlsLeft.forEach( function( el ) { el.classList.add( 'fragmented', 'enabled' ); } );
+                               if( fragments.next ) dom.controlsRight.forEach( function( el ) { el.classList.add( 'fragmented', 'enabled' ); } );
                        }
-
                }
 
        }