browser history updates can now be disabled via config
authorHakim El Hattab <hakim.elhattab@gmail.com>
Sat, 31 Dec 2011 06:33:19 +0000 (22:33 -0800)
committerHakim El Hattab <hakim.elhattab@gmail.com>
Sat, 31 Dec 2011 06:33:19 +0000 (22:33 -0800)
index.html
js/reveal.js

index 8251079c70921dce3981fe57453a92cbc247ad06..025c09101dced593acb59fc169ff85d8e3c85e77 100644 (file)
@@ -5,6 +5,9 @@
                <meta charset="utf-8">
                
                <title>reveal.js</title>
+
+               <meta name="description" content="An easy to use CSS 3D slideshow tool for quickly creating good looking HTML presentations.">
+               <meta name="author" content="Hakim El Hattab">
                
                <link href='http://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
                
                                // 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,
 
                                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();
                </script>
-               
+
        </body>
 </html>
\ No newline at end of file
index 5f99770e2c21f655da6d55f7ee945b8918781091..72756c154ff8846a70d06e1f752008cb6d9e254b 100644 (file)
@@ -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;
+               }
        }
 
        /**