【问题标题】:youtube javascript API detect fullscreen exit on iOS devicesyoutube javascript API检测iOS设备上的全屏退出
【发布时间】:2018-05-16 10:52:27
【问题描述】:

我似乎不知道应该将事件侦听器添加到哪个元素才能使其在 iOS 上运行,我正在侦听这些事件

['webkitfullscreenchange', 'mozfullscreenchange', 'fullscreenchange', 'MSFullscreenChange']; 

并同时监听document 和传递给new YT.Player() 的元素,它们在桌面浏览器和安卓浏览器上都可以正常触发,但在iOS 上都不会触发(chrome 或safari,没关系)。

你可以在这里查看,底部的http://youtubeplayer.fxck.cz/-1, 1, 2, 3是标准的youtube播放器事件,1337是来自元素的fullscreenchange,1338是来自documentfullscreenchange

【问题讨论】:

标签: javascript ios youtube youtube-api youtube-javascript-api


【解决方案1】:

使用以下检测方式:

document.onwebkitfullscreenchange
document.onfullscreenchange
document.onmozfullscreenchange

也使用变量来存储是否进入全屏

isInFullscreen = false;

当上述其中之一被调用时,我们只是否定当前状态。这样我们就可以检测全屏变化。

jquery 方法示例:

 var isFullscreen = document.fullScreen || document.mozFullScreen || document.webkitIsFullScreen;
  $(document).on ('mozfullscreenchange webkitfullscreenchange fullscreenchange',function(){
      isFullscreen = !isFullscreen;
  });

你需要有更多的指标来确保与所有浏览器的兼容性。

【讨论】:

  • document.onwebkitfullscreenchange 在这种情况下不会触发,这就是重点。
  • 基于apple doc,您可以根据需要扩展这些案例。在 ios 中,webkitbeginfullscreen 和 webkitendfullscreen 事件在视频进入和退出全屏模式时触发。你可以试试。还要检查您设备上的最新更新,这也可能是一件事。 developer.mozilla.org/en-US/docs/Web/API/Document/…
  • 他们不会开火。检查youtubeplayer.fxck.cz 状态 1337 和 1338 分别是元素和文档上的全屏更改事件。它可以在每个浏览器、桌面或安卓系统上打印,但不能在 iOS 上打印。这是它的源代码gist.github.com/fxck/b19503e62217b583591b33b2be97deb9
  • 您是否已经告知苹果这个问题,或者找到了解决方案?
  • 很遗憾,没有。
【解决方案2】:

看起来类似于iPhone WebApps, is there a way to detect how it was loaded? Home Screen vs Safari?answer/

你试过了吗:

if (window.navigator.standalone) {
  // fullscreen mode
}

This page 也有帮助

【讨论】:

  • 这不是同一个“全屏”。这几乎是无铬的 safari,而在视频中进入全屏似乎是一些 ios 特定版本的 html5 全屏 api。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-12
  • 1970-01-01
  • 2017-06-13
  • 2019-04-16
  • 2016-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多