如何禁用全屏 HTML5 视频的默认控件?

Posted

技术标签:

【中文标题】如何禁用全屏 HTML5 视频的默认控件?【英文标题】:How to disable default controls on a full screen HTML5 video? 【发布时间】:2012-12-15 15:06:05 【问题描述】:

我有一个指定宽度和高度的视频,双击它可以使用videoElement.webkitRequestFullScreen() 全屏显示。 默认情况下,视频没有任何控件。但是由于某种原因,在全屏时,会弹出默认控件。这是我正在做的事情:

<video id="videoId"   autoplay="autoplay" ondblclick="enterFullScreen('videoId')" src="Blah.mp4"></video>

enterFullScreen(...)函数定义为:

function enterFullScreen(elementId) 
    var element = document.getElementById(elementId);
    element.webkitRequestFullScreen();
    element.removeAttribute("controls");

如您所见,我已经尝试删除函数中的控件。但无济于事。

有人能告诉我如何防止这种自动插入默认控件的情况发生吗?

【问题讨论】:

【参考方案1】:

这可以通过 CSS 解决,如下所述:html5 video does not hide controls in fullscreen mode in Chrome

video::-webkit-media-controls 
  display:none !important;

【讨论】:

在我提出问题时,此选项不可用。不过还是谢谢:) 这会隐藏所有模式下的控件,而不仅仅是全屏。我找不到使它仅适用于全屏的方法,因为 :fullscreen 选择器似乎都不适用于这些元素。【参考方案2】:

最后,我找到了解决这个问题的方法。 正如 Alexander Farkas 建议的那样,我将视频包装在另一个 div 中,并将此父 div 设置为全屏,然后将视频的高度和宽度分别设置为 screen.heightscreen.width。我在退出全屏时恢复了两个 div 的原始属性。

伪代码:

HTML:

<div id="videoContainer" style="position:absolute;background-color:black;">
     <video id="videoId" style="height:240;width:320;" ondblclick="enterFullScreen('videoId')" src="movie.mp4"></video>
</div>

JavaScript:

function enterFullScreen(id) 
    var element = document.getElementById(id);
    element.parentNode.webkitRequestFullScreen();           
    element.style.height = screen.height;
    element.style.width = screen.width;

document.addEventListener("webkitfullscreenchange", function () 
    if(!document.webkitIsFullScreen) 
        // Restore CSS properties here which in this case is as follows :
        var element = document.getElementById('videoId');
        element.style.height=240;
        element.style.width=320;
    
    , false);

【讨论】:

【参考方案3】:

如果视频全屏显示,用户代理应该显示控件,即使控件属性不存在。

较新的用户代理还支持任何元素上的全屏 API。因此,您可以尝试以下方法:

element.parentNode.webkitRequestFullScreen();

【讨论】:

谢谢,但我已经尝试过了。这并不能解决问题,因为虽然父 div 进入全屏模式,但视频仍保持其原始分辨率。你能告诉我为什么控制在全屏视频上是强制性的吗?有没有办法去掉?这是我正在显示的直播,有播放/暂停按钮和搜索栏似乎很荒谬。 这是所有视频播放器脚本都使用的解决方案。要更改全屏视频的尺寸,只需使用 CSS: width: 100%;高度:100%; 好吧,在全屏显示时,该特定元素的原始高度和宽度属性不受影响。因此,即使我将视频的高度和宽度设置为 100%,分辨率在全屏时保持不变。您可以验证这一点。 我解决了这个问题。我只需要摆弄 CSS 以确保子元素填满屏幕。谢谢:)【参考方案4】:

您可以找到包含控件的 div 的 id 并使用 javascript 禁用它。 例如,如果包含控件的 div 的 id 是“controldiv” 然后在你的函数中你可以写

var ctrls = document.getElementById("controldiv");
ctrls.disabled="true";

【讨论】:

你能告诉我如何找到包含控件的 div 的 id 吗? 你可以在mozilla firefox中使用firebug或者在IE中使用开发者工具。或者您可以在启动视频后使用视频页面的“查看源代码”,然后您必须遍历 html 找出 div 元素的 id。 没那么简单。在这里发布问题之前,我已经尝试过了。 查看源代码显示原始 HTML 文件,而不是当前结构。您需要使用开发工具或在 FF 中突出显示该区域,右键单击并查看选择源。 你能给我一个链接到你的页面吗?【参考方案5】:

通常以下应该可以工作:

var videoPlayer = document.getElementById('videoId');
videoPlayer.controls = false;

但我不确定跳转到全屏模式是否会覆盖它。

【讨论】:

可悲的是,它也压倒了这一点:( 觉得可能是这样。

以上是关于如何禁用全屏 HTML5 视频的默认控件?的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用 iOS HTML5 视频控件? [关闭]

如何在 HTML5 中隐藏视频标签的全屏按钮

在 HTML5 视频上全屏显示时,自定义控件仍然适用吗?

HTML5 禁用默认控件

在 HTML5 视频中切换隐藏式字幕并禁用默认视频控件

HTML5视频,如何检测没有音轨?