Przeglądaj źródła

lazy loading support for video #793

Hakim El Hattab 11 lat temu
rodzic
commit
bbd596e434
1 zmienionych plików z 19 dodań i 1 usunięć
  1. 19 1
      js/reveal.js

+ 19 - 1
js/reveal.js

@@ -2172,11 +2172,29 @@ var Reveal = (function(){
 	 */
 	function loadSlide( slide ) {
 
-		toArray( slide.querySelectorAll( 'img[data-src]' ) ).forEach( function( element ) {
+		// Media elements with data-src attributes
+		toArray( slide.querySelectorAll( 'img[data-src], video[data-src]' ) ).forEach( function( element ) {
 			element.setAttribute( 'src', element.getAttribute( 'data-src' ) );
 			element.removeAttribute( 'data-src' );
 		} );
 
+		// Video elements with multiple <source>s
+		toArray( slide.querySelectorAll( 'video' ) ).forEach( function( video ) {
+			var sources = 0;
+
+			toArray( slide.querySelectorAll( 'source[data-src]' ) ).forEach( function( source ) {
+				source.setAttribute( 'src', source.getAttribute( 'data-src' ) );
+				source.removeAttribute( 'data-src' );
+				sources += 1;
+			} );
+
+			// If we rewrote sources for this video, we need to manually
+			// tell it to load from its new origin
+			if( sources > 0 ) {
+				video.load();
+			}
+		} );
+
 	}
 
 	/**