aboutsummaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
Diffstat (limited to 'js')
-rw-r--r--js/reveal.js54
1 files changed, 28 insertions, 26 deletions
diff --git a/js/reveal.js b/js/reveal.js
index fe66dab..6a33983 100644
--- a/js/reveal.js
+++ b/js/reveal.js
@@ -54,6 +54,7 @@ var Reveal = (function(){
history: false,
transition: 'default',
theme: 'default',
+ mouseWheel: true,
rollingLinks: true
},
@@ -70,7 +71,10 @@ var Reveal = (function(){
document.body.style['WebkitTransform'] !== undefined ||
document.body.style['MozTransform'] !== undefined ||
document.body.style['msTransform'] !== undefined ||
- document.body.style['OTransform'] !== undefined;
+ document.body.style['OTransform'] !== undefined,
+
+ // Throttles mouse wheel navigation
+ mouseWheelTimeout = 0;
/**
* Starts up the slideshow by applying configuration
@@ -129,15 +133,15 @@ var Reveal = (function(){
dom.wrapper.classList.add( config.theme );
}
+ if( config.mouseWheel ) {
+ document.addEventListener('DOMMouseScroll', onDocumentMouseScroll, false); // FF
+ document.addEventListener('mousewheel', onDocumentMouseScroll, false);
+ }
+
if( config.rollingLinks ) {
// Add some 3D magic to our anchors
linkify();
}
-
- //bind scrolling
- if(window.addEventListener){
- document.addEventListener('DOMMouseScroll', scrollStep, false);
- }
// Read the initial hash
readURL();
@@ -251,6 +255,24 @@ var Reveal = (function(){
slide();
}
}
+
+ /**
+ * Handles mouse wheel scrolling, throttled to avoid
+ * skipping multiple slides.
+ */
+ function onDocumentMouseScroll( event ){
+ clearTimeout( mouseWheelTimeout );
+
+ mouseWheelTimeout = setTimeout( function() {
+ var delta = event.detail || -event.wheelDelta;
+ if( delta > 0 ) {
+ availableRoutes().down ? navigateDown() : navigateRight();
+ }
+ else {
+ availableRoutes().up ? navigateUp() : navigateLeft();
+ }
+ }, 100 );
+ }
/**
* Handler for the window level 'hashchange' event.
@@ -627,26 +649,6 @@ var Reveal = (function(){
}
}
- var stepT=0;
- function scrollStep(e){
- clearTimeout(stepT);
- stepT=setTimeout(function(){
- if(e.detail>0){
- if(availableRoutes().down){
- navigateDown()
- }else{
- navigateRight()
- }
- }else{
- if(availableRoutes().up){
- navigateUp()
- }else{
- navigateLeft()
- }
- }
- },200);
- }
-
// Expose some methods publicly
return {
initialize: initialize,