From 9856f57db5a2a66d78f58f07069ebf8c1f5b9d56 Mon Sep 17 00:00:00 2001 From: Hakim El Hattab Date: Fri, 30 Dec 2011 22:33:19 -0800 Subject: [PATCH] browser history updates can now be disabled via config --- index.html | 10 ++++++++-- js/reveal.js | 56 ++++++++++++++++++++++++++++++---------------------- 2 files changed, 40 insertions(+), 26 deletions(-) diff --git a/index.html b/index.html index 8251079..025c091 100644 --- a/index.html +++ b/index.html @@ -5,6 +5,9 @@ reveal.js + + + @@ -219,6 +222,9 @@ // Display a presentation progress bar progress: true, + // If true; each slide will be pushed to the browser history + history: false, + // Apply a 3D roll to links on hover rollingLinks: true, @@ -226,11 +232,11 @@ theme: query.theme || 'default', // default/neon // Transition style - transition: query.transition || 'default' // default/cube/page/concave/linear(2d), + transition: query.transition || 'default' // default/cube/page/concave/linear(2d) }); hljs.initHighlightingOnLoad(); - + \ No newline at end of file diff --git a/js/reveal.js b/js/reveal.js index 5f99770..72756c1 100644 --- a/js/reveal.js +++ b/js/reveal.js @@ -72,6 +72,7 @@ * - Slides were moved one level deeper, into #reveal .slides * - Controls and progress bar were moved into #reveal * - All CSS is now much more explicit, rooted at #reveal, to prevent conflicts + * - Config option for disabling updates to URL, defaults to true * * * @author Hakim El Hattab | http://hakim.se @@ -86,13 +87,15 @@ var Reveal = (function(){ indexh = 0, indexv = 0, - // Configurations options, including; - // > {Boolean} controls - // > {Boolean} progress - // > {String} theme - // > {String} transition - // > {Boolean} rollingLinks - config = {}, + // Configurations options, can be overridden at initialization time + config = { + controls: false, + progress: false, + history: false, + transition: 'default', + theme: 'default', + rollingLinks: true + }, // Cached references to DOM elements dom = {}, @@ -127,15 +130,8 @@ var Reveal = (function(){ dom.controlsUp.addEventListener('click', preventAndForward( navigateUp ), false); dom.controlsDown.addEventListener('click', preventAndForward( navigateDown ), false); - // Fall back on default options - config.rollingLinks = options.rollingLinks === undefined ? true : options.rollingLinks; - config.controls = options.controls === undefined ? false : options.controls; - config.progress = options.progress === undefined ? false : options.progress; - config.transition = options.transition === undefined ? 'default' : options.transition; - config.theme = options.theme === undefined ? 'default' : options.theme; - - // Transition alias - if( config.transition === 'box' ) config.transition = 'cube'; + // Copy options over to our config object + extend( config, options ); // Fall back on the 2D transform theme 'linear' if( supports3DTransforms === false ) { @@ -167,6 +163,16 @@ var Reveal = (function(){ readURL(); } + /** + * Extend object a with the properties of object b. + * If there's a conflict, object b takes precedence. + */ + function extend( a, b ) { + for( var i in b ) { + a[ i ] = b[ i ]; + } + } + /** * Prevents an events defaults behavior calls the * specified delegate. @@ -529,14 +535,16 @@ var Reveal = (function(){ * state. */ function writeURL() { - var url = '/'; - - // Only include the minimum possible number of components in - // the URL - if( indexh > 0 || indexv > 0 ) url += indexh; - if( indexv > 0 ) url += '/' + indexv; - - window.location.hash = url; + if( config.history ) { + var url = '/'; + + // Only include the minimum possible number of components in + // the URL + if( indexh > 0 || indexv > 0 ) url += indexh; + if( indexv > 0 ) url += '/' + indexv; + + window.location.hash = url; + } } /**