Si bien puedo ejecutar el ejemplo simple de Mozilla para poner un elemento de video HTML5 en pantalla completa en función de la pulsación de teclas, revelar.js debe estar haciendo algo diferente o asíncrono con respecto a las pulsaciones de teclas. Cuando trato de hacer esto usando Reveal.configure({ keyboard: { 116: putVideoInFullScreen }}) , Firefox (78) simplemente se queja:
Se denegó la solicitud de pantalla completa porque no se llamó a Element.requestFullscreen() desde dentro de un controlador de eventos generado por el usuario de ejecución corta.
Del mismo modo, en Chromium:
No se pudo ejecutar 'requestFullscreen' en 'Elemento': la API solo puede iniciarse con un gesto del usuario.
Francamente, no entiendo por qué presionar una tecla no es un gesto de usuario. Examiné el código fuente deReveal.js, y todo parece ir directamente a través de un controlador de eventos de pulsación de tecla registrado.
Una solución alternativa que usa un controlador registrado directamente, como document.addEventListener("keypress", handleKeyPress, false) tampoco funciona, porque revela.js "bloquea" los eventos que se registraron antes, incluso si tengo Reveal.configure({ keyboard: { 116: null }}) , el controlador de eventos no recibe la pulsación de F5. 22 capturas.
¿Puedo obligar a FF a que me permita poner pantalla completa en cualquier caso? ¿Cómo puedo hacer que esto funcione?
Tenga en cuenta que mi pantalla FF ya está en pantalla completa. Lo que quiero hacer es alternar la pantalla completa para un elemento de video , como
var sl = Reveal.getCurrentSlide(); var e = sl.getElementsByTagName("video")[0]; if (typeof e !== 'undefined') { if (e.paused) { e.play(); e.requestFullscreen(); // !!! } else { e.pause(); document.exitFullscreen(); };Una solución alternativa para Firefox es deshabilitar la verificación, como se indica aquí : En about:config , establezca full-screen-api.allow-trusted-requests-only en false .