소스 검색

auto play/pause html5 media when entering/leaving slide (#388)

Hakim El Hattab 11 년 전
부모
커밋
32736a791c
2개의 변경된 파일37개의 추가작업 그리고 1개의 파일을 삭제
  1. 36 0
      js/reveal.js
  2. 1 1
      js/reveal.min.js

+ 36 - 0
js/reveal.js

@@ -1147,6 +1147,10 @@ var Reveal = (function(){
 			}
 		}
 
+		// Handle embedded content
+		stopEmbeddedContent( previousSlide );
+		startEmbeddedContent( currentSlide );
+
 		updateControls();
 		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.
 	 */

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1 - 1
js/reveal.min.js


이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.