我正在使用Vimeo API ,并且文档指出,要捕获视频的结尾,请使用以下代码
player.on('ended', function(data) {
// `data` is an object containing properties specific to that event
});
效果很好,但是当视频结束时,vimeo 视频播放器会停止视频(显然),但将进度设置回 0.00。
因此,pause
和 seeked
事件也会被触发,这意味着当视频结束时,触发的事件如下所示
它触发 pause
和 seeked
事件的原因也是有道理的,但它远非理想。我想发送一个 ajax 请求来保存进度,这意味着如果我监听 ending
事件,它将触发 3 次。
有人以前遇到过这个问题并找到解决方法吗?
最佳答案
据我所知,没有办法直接使用 API 来解决这个问题,我解决这个问题的方法是观察进度,检查视频何时接近完成并删除绑定(bind)并将进度设置为完成。
videoPlayer.on('progress', (data) => {
//If the player percent is over 0.95, updateProgress to 100% and remove all listeners
if(data.percent > 0.95){
//Manually set the data to 100
data.percent = 1;
//Remove the listeners
videoPlayer.off('pause');
videoPlayer.off('seeked');
videoPlayer.off('progress');
//Update the progress to be 100
updateProgress(data, 'seeked');
}
})
无论如何,这对于我的场景来说是一个更好的解决方法,因为我们的视频末尾有制作人员名单,而用户最终在制作人员名单期间点击了视频,这意味着该视频在技术上从未被标记为完整。
关于javascript - Vimeo API 结束时触发多个事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55909542/