group feature detection results in 'features' object, test for canvas and requestAnimationFrame
This commit is contained in:
		
							
								
								
									
										23
									
								
								js/reveal.js
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								js/reveal.js
									
									
									
									
									
								
							| @@ -136,11 +136,8 @@ var Reveal = (function(){ | |||||||
| 		// Cached references to DOM elements | 		// Cached references to DOM elements | ||||||
| 		dom = {}, | 		dom = {}, | ||||||
|  |  | ||||||
| 		// Client support for CSS 3D transforms, see #checkCapabilities() | 		// Features supported by the browser, see #checkCapabilities() | ||||||
| 		supports3DTransforms, | 		features = {}, | ||||||
|  |  | ||||||
| 		// Client support for CSS 2D transforms, see #checkCapabilities() |  | ||||||
| 		supports2DTransforms, |  | ||||||
|  |  | ||||||
| 		// Client is a mobile device, see #checkCapabilities() | 		// Client is a mobile device, see #checkCapabilities() | ||||||
| 		isMobileDevice, | 		isMobileDevice, | ||||||
| @@ -183,7 +180,7 @@ var Reveal = (function(){ | |||||||
|  |  | ||||||
| 		checkCapabilities(); | 		checkCapabilities(); | ||||||
|  |  | ||||||
| 		if( !supports2DTransforms && !supports3DTransforms ) { | 		if( !features.transforms2d && !features.transforms3d ) { | ||||||
| 			document.body.setAttribute( 'class', 'no-transforms' ); | 			document.body.setAttribute( 'class', 'no-transforms' ); | ||||||
|  |  | ||||||
| 			// If the browser doesn't support core features we won't be | 			// If the browser doesn't support core features we won't be | ||||||
| @@ -212,18 +209,22 @@ var Reveal = (function(){ | |||||||
| 	 */ | 	 */ | ||||||
| 	function checkCapabilities() { | 	function checkCapabilities() { | ||||||
|  |  | ||||||
| 		supports3DTransforms =  'WebkitPerspective' in document.body.style || | 		features.transforms3d = 'WebkitPerspective' in document.body.style || | ||||||
| 								'MozPerspective' in document.body.style || | 								'MozPerspective' in document.body.style || | ||||||
| 								'msPerspective' in document.body.style || | 								'msPerspective' in document.body.style || | ||||||
| 								'OPerspective' in document.body.style || | 								'OPerspective' in document.body.style || | ||||||
| 								'perspective' in document.body.style; | 								'perspective' in document.body.style; | ||||||
|  |  | ||||||
| 		supports2DTransforms =  'WebkitTransform' in document.body.style || | 		features.transforms2d = 'WebkitTransform' in document.body.style || | ||||||
| 								'MozTransform' in document.body.style || | 								'MozTransform' in document.body.style || | ||||||
| 								'msTransform' in document.body.style || | 								'msTransform' in document.body.style || | ||||||
| 								'OTransform' in document.body.style || | 								'OTransform' in document.body.style || | ||||||
| 								'transform' in document.body.style; | 								'transform' in document.body.style; | ||||||
|  |  | ||||||
|  | 		features.requestAnimationFrame = typeof window.requestAnimationFrame === 'function'; | ||||||
|  |  | ||||||
|  | 		features.canvas = !!document.createElement( 'canvas' ).getContext; | ||||||
|  |  | ||||||
| 		isMobileDevice = navigator.userAgent.match( /(iphone|ipod|android)/gi ); | 		isMobileDevice = navigator.userAgent.match( /(iphone|ipod|android)/gi ); | ||||||
|  |  | ||||||
| 	} | 	} | ||||||
| @@ -523,7 +524,7 @@ var Reveal = (function(){ | |||||||
| 		if( typeof options === 'object' ) extend( config, options ); | 		if( typeof options === 'object' ) extend( config, options ); | ||||||
|  |  | ||||||
| 		// Force linear transition based on browser capabilities | 		// Force linear transition based on browser capabilities | ||||||
| 		if( supports3DTransforms === false ) config.transition = 'linear'; | 		if( features.transforms3d === false ) config.transition = 'linear'; | ||||||
|  |  | ||||||
| 		dom.wrapper.classList.add( config.transition ); | 		dom.wrapper.classList.add( config.transition ); | ||||||
|  |  | ||||||
| @@ -886,7 +887,7 @@ var Reveal = (function(){ | |||||||
| 	 */ | 	 */ | ||||||
| 	function enableRollingLinks() { | 	function enableRollingLinks() { | ||||||
|  |  | ||||||
| 		if( supports3DTransforms && !( 'msPerspective' in document.body.style ) ) { | 		if( features.transforms3d && !( 'msPerspective' in document.body.style ) ) { | ||||||
| 			var anchors = document.querySelectorAll( SLIDES_SELECTOR + ' a:not(.image)' ); | 			var anchors = document.querySelectorAll( SLIDES_SELECTOR + ' a:not(.image)' ); | ||||||
|  |  | ||||||
| 			for( var i = 0, len = anchors.length; i < len; i++ ) { | 			for( var i = 0, len = anchors.length; i < len; i++ ) { | ||||||
| @@ -2472,7 +2473,7 @@ var Reveal = (function(){ | |||||||
| 			event.preventDefault(); | 			event.preventDefault(); | ||||||
| 		} | 		} | ||||||
| 		// ESC or O key | 		// ESC or O key | ||||||
| 		else if ( ( event.keyCode === 27 || event.keyCode === 79 ) && supports3DTransforms ) { | 		else if ( ( event.keyCode === 27 || event.keyCode === 79 ) && features.transforms3d ) { | ||||||
| 			if( dom.preview ) { | 			if( dom.preview ) { | ||||||
| 				closePreview(); | 				closePreview(); | ||||||
| 			} | 			} | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								js/reveal.min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								js/reveal.min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
		Reference in New Issue
	
	Block a user