使用video.js媒体播放器,我想继续播放媒体,但暂时暂停更新进度指标(进度 - bar和当前时间指示器)。一段时间后,我想恢复进度指标。
这些进度指标会收听" timeupdate"事件。我无法弄清楚如何删除特定功能。使用video.off('timeupdate');
,我删除了" timeupdate"事件的所有处理程序。但是我不想删除所有" timeupdate"处理程序,只有2个特定的处理程序:
.controlBar.currentTimeDisplay.updateContent()
.controlBar.progressControl.seekBar.update()
我失去了尝试删除特定处理程序的所有不同方式。
以下内容无效:
video.player_.controlBar.currentTimeDisplay.off(video.player_, 'timeupdate', this.updateContent)
Uncaught TypeError: Cannot read property 'guid' of undefined
这不会引起错误,但也没有做任何事情:
video.player_.controlBar.currentTimeDisplay.off(video.player_, 'timeupdate', video.player_.controlBar.currentTimeDisplay.updateContent)
使用此功能,我以后可以还原进度显示:
video.on('timeupdate', function(){
this.controlBar.currentTimeDisplay.updateContent();
this.controlBar.remainingTimeDisplay.updateContent();
this.controlBar.progressControl.seekBar.updateARIAAttributes();
this.controlBar.progressControl.seekBar.update();
});
,但我认为这也不是正确的。
我做一个jsfiddle来显示我要做的事情:https://jsfiddle.net/bj23381d/2/暂停了进度更新,但是所有其他听取'timeupdate'的事件也已删除。
通过向对象添加函数以删除和添加其事件听众来使其工作。
var video = videojs('example_video_1');
function startStopUpdate() {
vjs.CurrentTimeDisplay.prototype.stopUpdateContent = function(){
this.off(this.player_, 'timeupdate', this.updateContent);
}
vjs.CurrentTimeDisplay.prototype.startUpdateContent = function(){
this.on(this.player_, 'timeupdate', this.updateContent);
}
vjs.SeekBar.prototype.stopUpdate = function(){
this.off(this.player_, 'timeupdate', this.update);
}
vjs.SeekBar.prototype.startUpdate = function(){
this.on(this.player_, 'timeupdate', this.update);
}
}
videojs.plugin('startStopUpdate', startStopUpdate);
video.startStopUpdate();
function stopUpdate(){
console.log('stopUpdate');
video.controlBar.currentTimeDisplay.stopUpdateContent();
video.controlBar.progressControl.seekBar.stopUpdate();
}
function startUpdate(){
console.log('startUpdate');
video.controlBar.currentTimeDisplay.startUpdateContent();
video.controlBar.progressControl.seekBar.startUpdate();
};
setTimeout(stopUpdate, 2000);
setTimeout(startUpdate, 10000);
https://jsfiddle.net/bj23381d/4/