Video.js控件即使被禁用也会在暂停时返回



主题几乎说明了一切。我有一个Video.js实例,它关闭了控件(也就是说,标记中没有"控件")。它工作得很好,但当我暂停视频时(使用外部自定义按钮和myPlayer.pause()),视频上的控件会淡出。当我点击播放时,它们会再次淡出。

这似乎绝对不是它应该的工作方式。有人知道这是一个bug吗,还是我只是错过了什么?

ctagney的答案仅在使用videojs的未压缩(dev)版本时有效,因为一旦压缩,lockShowing方法就会被重命名(player()也是如此)。希望他关于556号问题的合并请求能很快被接受。

当对pause()调用lockShowing时,它会将类vjs-lock-showing添加到controls元素中,该元素具有css:display: block !important。这导致由disable()方法添加的display:none的内联样式被伪造。以下是解决CSS特殊性问题的方法,并适用于压缩和未压缩的视频js:

var v = videojs("video", {});
if(!v.controls()) {
  v.controlBar.el().className = v.controlBar.el().className + ' vjs-controls-disabled';
}

然后添加到css文件的底部:

.vjs-controls-disabled {display: none !important;}

(或者您可以从.vjs-lock-showing中删除!important

这是一个已确认的错误。我看到了一个拟议的修复方案,但目前这仍然是一个开放的拉取请求。同时,您可以通过覆盖ControlBar的lockShowing方法来修复此问题。

var vid = videojs("video", {});
if (!vid.player().controls()) {
  vid.controlBar.lockShowing = function(){};
}

因为(当前)控制栏将侦听器附加到"暂停"事件并调用lockShowing()。

最新更新