auto play/pause html5 media when entering/leaving slide (#388)
parent
18795c161f
commit
32736a791c
36
js/reveal.js
36
js/reveal.js
|
@ -1147,6 +1147,10 @@ var Reveal = (function(){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Handle embedded content
|
||||||
|
stopEmbeddedContent( previousSlide );
|
||||||
|
startEmbeddedContent( currentSlide );
|
||||||
|
|
||||||
updateControls();
|
updateControls();
|
||||||
updateProgress();
|
updateProgress();
|
||||||
|
|
||||||
|
@ -1419,6 +1423,38 @@ var Reveal = (function(){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Start playback of any embedded content inside of
|
||||||
|
* the targeted slide.
|
||||||
|
*/
|
||||||
|
function startEmbeddedContent( slide ) {
|
||||||
|
|
||||||
|
if( slide ) {
|
||||||
|
toArray( slide.querySelectorAll( 'video, audio' ) ).forEach( function( el ) {
|
||||||
|
if( !el.hasAttribute( 'data-ignore' ) ) {
|
||||||
|
el.play();
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stop playback of any embedded content inside of
|
||||||
|
* the targeted slide.
|
||||||
|
*/
|
||||||
|
function stopEmbeddedContent( slide ) {
|
||||||
|
|
||||||
|
if( slide ) {
|
||||||
|
toArray( slide.querySelectorAll( 'video, audio' ) ).forEach( function( el ) {
|
||||||
|
if( !el.hasAttribute( 'data-ignore' ) ) {
|
||||||
|
el.pause();
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reads the current URL (hash) and navigates accordingly.
|
* Reads the current URL (hash) and navigates accordingly.
|
||||||
*/
|
*/
|
||||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue