HTML5 <video> 没有标准全屏按钮?

Posted

技术标签:

【中文标题】HTML5 <video> 没有标准全屏按钮?【英文标题】:No Standard Full Screen Button for HTML5 <video>? 【发布时间】:2016-11-20 09:08:07 【问题描述】:

我有一个 video 元素,它与 Safari 中的标准控件(OS X 10.11 - El Capitan)完美配合。我有播放/暂停、洗涤器、字幕,甚至 AirPlay。 …但是没有全屏按钮。我发誓我以前在普通控件上看到过那个按钮。 WebKit 博客甚至在unrelated article 中有一个带有按钮的屏幕截图(背景过滤器是 rad 不过,检查一下)。

这真的不是标准功能吗?

我已将fullscreen 添加到videosource 标签,甚至fullscreen="fullscreen" controls 标签正在工作(毕竟我看到了控件)。

ios 的控件在视觉上有所不同,包括全屏按钮。

我一直在四处寻找,我能找到的最受欢迎的是this super old *** article,它基本上说我需要使用 javascript。这似乎不对。 I feel like I’m taking crazy pills!

我想这可以解释为什么这么多网站使用 JS 钩子来滚动他们自己的控件,但对于预期的功能来说似乎需要做很多工作。

我意识到我只是在要求我可怜的名声,但我希望我只是错过了一些明显的事情。

提前感谢您的帮助/投反对票。 :)

【问题讨论】:

我注意到 this 其他帖子,但不一样。该视频不在iframe 中——没有嵌入或虚假的 dom 元素。我将视频托管在我的服务器上,并用一个简单的video 标签包含它。 【参考方案1】:

我对这个问题感到恐慌,直到我发现包含在“弹出窗口”而不是常规窗口/选项卡中的&lt;video&gt; 会导致&lt;video&gt; 标记在其控件中删除全屏按钮。

我的“页面预览”碰巧是在一个弹出窗口中启动的,并且将其最大化后,我花了一段时间消除各种因素,然后得出结论,这是一个弹出窗口与普通窗口/选项卡的问题。

我遇到的行为是在 Chrome 中。其他浏览器我没试过。

另外:另外,请注意,在 IFRAME 中也有相同的行为,也删除了全屏按钮(来自 cmets)。

【讨论】:

感谢您的提示!在 IFRAME 中运行时看起来是一样的。 将 Chrome 从 61 升级到 62 使全屏按钮出现在 iFrame 内的 &lt;video&gt; 上。我浏览了发行说明,但没有提及这一点。【参考方案2】:

我想通了,这至少是愚蠢的。

标题

我将视频元素设置为使用max-width: 100%,这样它将填充页面上的容器。我认为这不会对视频全屏显示产生任何影响。

无元数据

视频一开始就没有任何要预加载的元数据。我使用应用程序为文件添加标题。

【讨论】:

【参考方案3】:

开始播放视频时是否显示全屏切换按钮?

根据苹果的documentation:

在加载电影元数据之前,webkitSupportsFullscreen 属性无效。您可以通过为 loadedmetadata 事件安装事件侦听器来检测何时加载元数据。

在控件中启用全屏支持之前,视频文件中似乎有一些支持需要检查。

在 Chrome 和 Safari 上查看 html5 video 时,在视频开始播放之前不会出现全屏切换按钮。

编辑:您可以通过将 preload="metadata" 添加到您的 video 元素来解决此问题。

【讨论】:

谢谢,杰里米。 preload="metadata" 已开启。我在添加 VTT 字幕时打开了它。它似乎没有任何区别。只是吐口水,但这是否意味着我可能需要在整个页面加载后通过 JS 再次“预加载”它?不知道我会怎么做,或者这是否重要…… 我将上面的内容移到了回复 Jeremy 而不是答案的评论中。杜普。 Jeremy 询问它是否在电影开始播放时出现。不,它永远不会出现。

以上是关于HTML5 <video> 没有标准全屏按钮?的主要内容,如果未能解决你的问题,请参考以下文章

如何让WebView中的Html5 Video全屏播放

有没有办法让 HTML5 视频全屏显示?

HTML5 <video> Chrome中的播放器控件右侧三个点打开空白屏幕

HTML5 标准规范

HTML5 <video> 可以播放 .mkv 文件吗?

在 iPad 和 Android 平板电脑上强制全屏播放 HTML5 视频?