1

由于 YouTube API 无法以编程方式触发全屏(显然有充分的理由,与旧版 Flash 支持有关,如此所述),我只需使用 HTML5 Element.requestFullscreen API 来全屏播放器 IFrame 即可。

不幸的是,如果用户在 YouTube 播放器中触发全屏,则播放器本身会全屏而不是 IFrame,并且不会产生任何事件来表明它已经这样做了。当应用程序的其余部分不知道什么是全屏和不再是全屏时,这会破坏我的 UI 并导致其他同步问题。部分解决方案是使用无铬播放器,然后渲染我自己的播放器控件,这样用户就无法单击 YouTube 全屏按钮 - 但是,事实证明,双击 YouTube 视频也会使其进入全屏模式,再次无法向应用程序的其余部分发出它已经这样做的信号。

那么,在不影响其他功能的情况下,是否有任何一致的方法可以防止嵌入式 YouTube 播放器在任何情况下全屏显示?

到目前为止,我最好的解决方案是在 iframe 上设置 pointer-events:none 。然而,这并不是很完美,因为它也使得不可能消除显示在 YouTube 视频上的广告横幅。一个理想的解决方案是阻止“双击全屏”响应,而不会弄乱其他任何东西。(例如,单击播放就可以了,因为 YouTube 播放器确实会发出播放事件,让我让应用程序的其余部分保持同步。)

4

3 回答 3

4

使用 iframe 标签嵌入时,可以使用该参数fs = "0"禁用全屏按钮。见http://codepen.io/anon/pen/zvOqKJ

于 2015-08-27T04:12:40.153 回答
4

这有一些奇怪的事情发生。当我按照此页面向 playerVars 传递“fs:0”时,我无法阻止全屏

https://developers.google.com/youtube/player_parameters?playerVersion=HTML5

(即使其他一些玩家变量正在发挥作用)

天知道出了什么问题,但我修复了它:

var ourYT = document.getElementById('player');
ourYT.allowFullscreen = false;
于 2017-04-28T16:08:19.797 回答
1

用这个;

iframe {指针事件:无;}

您可以禁用 youtube 播放器上的点击事件(播放、暂停、全屏);

于 2018-07-07T08:43:58.720 回答