主题几乎说明了一切。我有一个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()。