From af7c33b902dbeff05e32dcd720b1480356401e6b Mon Sep 17 00:00:00 2001 From: Hakim El Hattab Date: Wed, 14 Jun 2017 19:11:08 +0200 Subject: [PATCH] unload lazy loaded videos that are moved out of view --- js/reveal.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/js/reveal.js b/js/reveal.js index 17d1323..3bde30a 100644 --- a/js/reveal.js +++ b/js/reveal.js @@ -3169,6 +3169,7 @@ // Media elements with data-src attributes toArray( slide.querySelectorAll( 'img[data-src], video[data-src], audio[data-src]' ) ).forEach( function( element ) { element.setAttribute( 'src', element.getAttribute( 'data-src' ) ); + element.setAttribute( 'data-lazy-loaded', '' ); element.removeAttribute( 'data-src' ); } ); @@ -3179,6 +3180,7 @@ toArray( media.querySelectorAll( 'source[data-src]' ) ).forEach( function( source ) { source.setAttribute( 'src', source.getAttribute( 'data-src' ) ); source.removeAttribute( 'data-src' ); + source.setAttribute( 'data-lazy-loaded', '' ); sources += 1; } ); @@ -3285,6 +3287,18 @@ background.style.display = 'none'; } + // Reset lazy-loaded media elements with src attributes + toArray( slide.querySelectorAll( 'video[data-lazy-loaded][src], audio[data-lazy-loaded][src]' ) ).forEach( function( element ) { + element.setAttribute( 'data-src', element.getAttribute( 'src' ) ); + element.removeAttribute( 'src' ); + } ); + + // Reset lazy-loaded media elements with children + toArray( slide.querySelectorAll( 'video[data-lazy-loaded] source[src], audio source[src]' ) ).forEach( function( source ) { + source.setAttribute( 'data-src', source.getAttribute( 'src' ) ); + source.removeAttribute( 'src' ); + } ); + } /**