Youtube 嵌入的自动全屏显示

Posted

技术标签:

【中文标题】Youtube 嵌入的自动全屏显示【英文标题】:Auto-Full Screen for a Youtube embed 【发布时间】:2011-11-28 17:54:06 【问题描述】:

我在网页上嵌入了一个 Youtube 视频。

是否可以在用户按下播放时使用html5 iframe with Youtube's API 让视频全屏显示?

无法使用 Chromeless 播放器,因为该网站是为 iPad 设计的。

【问题讨论】:

【参考方案1】:

据我所知,使用 youtube 嵌入代码或 youtube javascript API 是不可能的。您必须编写自己的播放器才能拥有此功能。

阅读一下,您似乎可以使用 chromeless youtube 播放器,它会自行调整其父元素的宽度和高度。

这意味着如果您使用无铬播放器,您可以在触发play 事件的情况下使用javascript 调整div 的大小。

【讨论】:

【参考方案2】:

不,出于安全考虑,这是不可能的。

最终用户必须做一些事情来启动全屏。

如果您要运行 Adob​​e AIR 应用程序,您可以自动进行全屏激活,而无需最终用户执行任何操作。但它会是桌面应用程序,而不是网页。

【讨论】:

什么安全问题?欺骗用户以为他们在登录屏幕上并输入密码?据我所知,无法通过 Youtube 视频从用户那里获取数据。有兴趣知道安全问题是什么。【参考方案3】:

2013 年 11 月更新:这是可能的 - 真正的全屏,而不是全窗口,使用以下技术。正如@chrisg 所说,YouTube JS API 没有“默认全屏”选项。

创建自定义播放按钮 使用 YouTube JS API 播放视频 使用 HTML5 全屏 API 使元素全屏

这是代码。

var $ = document.querySelector.bind(document);

// Once the user clicks a custom fullscreen button
$(playButtonClass).addEventListener('click', function()
  // Play video and go fullscreen
  player.playVideo();

  var playerElement = $(playerWrapperClass);
  var requestFullScreen = playerElement.requestFullScreen || playerElement.mozRequestFullScreen || playerElement.webkitRequestFullScreen;
  if (requestFullScreen) 
    requestFullScreen.bind(playerElement)();
  
)

【讨论】:

对不起,函数 showVideoCallback(); ? @Martialp 只是为了做一个很好的例子而削减生产代码的遗留问题,我现在已经删除了。 我创建了一个demo on CodePen,似乎虽然代码有效(仅在桌面上),但 它在 Chrome 中破坏了 YouTube 自己的全屏行为,所以我不建议使用它。 -- 我还想补充一点,它不能在移动设备上运行,因为 (1) 您无法通过 ios/android 上的 YouTube API 播放视频,以及 (2) 即使您通过点击播放视频播放器 requestFullScreen() 需要立即执行用户操作,因此它不会触发“onPlay”。因此,一键播放视频或全屏播放;你总是需要两个单独的水龙头。 这不是真的 bfred.it,在 Android 上你可以调用:webView.getSettings().setMediaPlaybackRequiresUserGesture(false); @AlexeyStrakh 播放器元素使用的 CSS 类,例如 .player 或类似的。【参考方案4】:

我想我会发布一个更简单的更新方法来使用 html5 解决这个问题。

.ytfullscreen 是按钮的名称或您想要点击的任何名称。 #yrc-player-frame-0 将是您的 iframe 的名称。

jQuery(".ytfullscreen").click(function () 
    var e = document.getElementById("yrc-player-frame-0");
    if (e.requestFullscreen) 
        e.requestFullscreen();
     else if (e.webkitRequestFullscreen) 
        e.webkitRequestFullscreen();
     else if (e.mozRequestFullScreen) 
        e.mozRequestFullScreen();
     else if (e.msRequestFullscreen) 
        e.msRequestFullscreen();
    
);

【讨论】:

这与我的答案相同,但添加了 jQuery 依赖项。

以上是关于Youtube 嵌入的自动全屏显示的主要内容,如果未能解决你的问题,请参考以下文章

YouTube iframe 嵌入 - 全屏

在 iPhone 上禁用 YouTube 嵌入的自动全屏

“全屏不可用”将YouTube视频作为iframe嵌入QWebEngineView中

React Native:如何使用 expo 在 webview 中制作全屏 youtube 嵌入视频(没有 react-native 链接)

YouTube iframe 无法全屏显示

YouTube iframe 播放器 - 在 iOS 上触发全屏