【问题标题】:reveal.js : cannot request full screen on video element (Firefox, Chromium)reveal.js:无法请求全屏视频元素(Firefox,Chromium)
【发布时间】:2021-12-05 09:55:49
【问题描述】:

虽然我可以运行 plain Mozilla example 以根据按键将 HTML5 video 元素置于全屏状态,但 Reveal.js 必须针对按键执行不同或异步的操作。当我尝试使用 Reveal.configure({ keyboard: { 116: putVideoInFullScreen }}) 执行此操作时,Firefox (78) 只会抱怨:

全屏请求被拒绝,因为 Element.requestFullscreen() 没有从短时间运行的用户生成的事件处理程序中调用。

同样,在 Chromium 中:

在“元素”上执行“请求全屏”失败:API 只能由用户手势启动。

坦率地说,我不明白为什么按键不是用户手势。我查看了reveal.js源代码,这一切似乎都直接通过一个注册的按键事件处理程序。

使用直接注册的处理程序(如document.addEventListener("keypress", handleKeyPress, false))的解决方法也不起作用,因为reveal.js“阻止”之前注册的事件,所以即使我有Reveal.configure({ keyboard: { 116: null }}),事件处理程序也不会接收 F5 按下。第 22 条军规。

在任何情况下我都可以强制 FF 允许我全屏显示吗?我怎样才能做到这一点?


请注意,我的 FF 屏幕已经处于全屏状态。我想做的是为video 元素切换全屏,例如

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();
};

【问题讨论】:

    标签: javascript firefox reveal.js


    【解决方案1】:

    Firefox 的一种解决方法是禁用检查,as stated here:在about:config 中将full-screen-api.allow-trusted-requests-only 设置为false

    【讨论】:

      猜你喜欢
      • 2018-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多