aboutsummaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorHakim El Hattab <hakim.elhattab@gmail.com>2014-04-22 15:52:44 +0200
committerHakim El Hattab <hakim.elhattab@gmail.com>2014-04-22 15:52:44 +0200
commitbbd596e434969b446c2dff0929e3117285974fc4 (patch)
tree4f54df03472505a84cfdd46246bc4c0374a09556 /js
parent343765b7ab1ce5392389063b0513ce54a0a76506 (diff)
downloadfreenode-live-2017-presentation-bbd596e434969b446c2dff0929e3117285974fc4.tar
freenode-live-2017-presentation-bbd596e434969b446c2dff0929e3117285974fc4.tar.gz
lazy loading support for video #793
Diffstat (limited to 'js')
-rw-r--r--js/reveal.js20
1 files changed, 19 insertions, 1 deletions
diff --git a/js/reveal.js b/js/reveal.js
index 524678d..e910682 100644
--- a/js/reveal.js
+++ b/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();
+ }
+ } );
+
}
/**