Parcourir la source

only force media controls to be visible when necessarry

Hakim El Hattab il y a 5 ans
Parent
commit
2219107c69
1 fichiers modifiés avec 14 ajouts et 8 suppressions
  1. 14 8
      js/reveal.js

+ 14 - 8
js/reveal.js

@@ -3809,13 +3809,6 @@
 		_appendParamToIframeSource( 'src', 'player.vimeo.com/', 'api=1' );
 		_appendParamToIframeSource( 'data-src', 'player.vimeo.com/', 'api=1' );
 
-		// Always show media controls on mobile devices
-		if( isMobileDevice ) {
-			toArray( dom.slides.querySelectorAll( 'video, audio' ) ).forEach( function( el ) {
-				el.controls = true;
-			} );
-		}
-
 	}
 
 	/**
@@ -3859,7 +3852,20 @@
 					// Mobile devices never fire a loaded event so instead
 					// of waiting, we initiate playback
 					else if( isMobileDevice ) {
-						el.play();
+						var promise = el.play();
+
+						// If autoplay does not work, ensure that the controls are visible so
+						// that the viewer can start the media on their own
+						if( promise && typeof promise.catch === 'function' && el.controls === false ) {
+							promise.catch( function() {
+								el.controls = true;
+
+								// Once the video does start playing, hide the controls again
+								el.addEventListener( 'play', function() {
+									el.controls = false;
+								} );
+							} );
+						}
 					}
 					// If the media isn't loaded, wait before playing
 					else {