diff options
author | Hakim El Hattab <hakim.elhattab@gmail.com> | 2014-04-22 15:52:44 +0200 |
---|---|---|
committer | Hakim El Hattab <hakim.elhattab@gmail.com> | 2014-04-22 15:52:44 +0200 |
commit | bbd596e434969b446c2dff0929e3117285974fc4 (patch) | |
tree | 4f54df03472505a84cfdd46246bc4c0374a09556 /js | |
parent | 343765b7ab1ce5392389063b0513ce54a0a76506 (diff) | |
download | perl-software-in-gnu-guix-bbd596e434969b446c2dff0929e3117285974fc4.tar perl-software-in-gnu-guix-bbd596e434969b446c2dff0929e3117285974fc4.tar.gz |
lazy loading support for video #793
Diffstat (limited to 'js')
-rw-r--r-- | js/reveal.js | 20 |
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(); + } + } ); + } /** |