Просмотр исходного кода

prevent iframes from auto-focusing and disabling keyboard nav, controllable via preventIframeAutoFocus

Hakim El Hattab 1 неделя назад
Родитель
Сommit
c9d6785df2
6 измененных файлов с 21 добавлено и 0 удалено
  1. 0 0
      dist/reveal.esm.js
  2. 0 0
      dist/reveal.esm.js.map
  3. 0 0
      dist/reveal.js
  4. 0 0
      dist/reveal.js.map
  5. 3 0
      js/config.js
  6. 18 0
      js/controllers/slidecontent.js

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/reveal.esm.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/reveal.esm.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/reveal.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/reveal.js.map


+ 3 - 0
js/config.js

@@ -168,6 +168,9 @@ export default {
 	// - false:  All iframes with data-src will be loaded only when visible
 	// - false:  All iframes with data-src will be loaded only when visible
 	preloadIframes: null,
 	preloadIframes: null,
 
 
+	// Prevent embedded iframes from automatically focusing on themselves
+	preventIframeAutoFocus: true,
+
 	// Can be used to globally disable auto-animation
 	// Can be used to globally disable auto-animation
 	autoAnimate: true,
 	autoAnimate: true,
 
 

+ 18 - 0
js/controllers/slidecontent.js

@@ -468,6 +468,24 @@ export default class SlideContent {
 
 
 		let iframe = event.target;
 		let iframe = event.target;
 
 
+		if( this.Reveal.getConfig().preventIframeAutoFocus ) {
+
+			let elapsed = 0;
+			const interval = 100;
+			const maxTime = 1000;
+			const checkFocus = () => {
+				if( document.activeElement === iframe ) {
+					document.activeElement.blur();
+				} else if( elapsed < maxTime ) {
+					elapsed += interval;
+					setTimeout( checkFocus, interval );
+				}
+			};
+
+			setTimeout( checkFocus, interval );
+
+		}
+
 		if( iframe && iframe.contentWindow ) {
 		if( iframe && iframe.contentWindow ) {
 
 
 			let isAttachedToDOM = !!closest( event.target, 'html' ),
 			let isAttachedToDOM = !!closest( event.target, 'html' ),

Некоторые файлы не были показаны из-за большого количества измененных файлов