Vimeo API最终引发多个事件

时间:2019-04-29 19:17:34

标签: javascript vimeo vimeo-api

我正在使用Vimeo API,并且文档指出,要捕获视频的结尾,请使用以下代码

before_save :serialize_properties

private

def serialize_properties
  properties = { full_name: full_name, mobile: mobile }
end

效果很好,但是当视频结束时,vimeo视频播放器停止了视频(显然),但是将进度恢复为0.00。

正因为如此,player.on('ended', function(data) { // `data` is an object containing properties specific to that event }); pause事件也会被触发,这意味着当视频结束时,触发的事件看起来像这样

enter image description here

为什么它也会触发seekedpause事件很有意义,但这远非理想。我要发送ajax请求来保存进度,这意味着如果我监听seeked事件,它将触发3次。

以前有没有人遇到过这种情况并想出办法了?

2 个答案:

答案 0 :(得分:1)

使用API​​触发代码管理器中的GA事件时,我遇到了类似的问题。它正在pause事件的每一侧生成另外两个ended事件。最后,我不得不检查事件标签和percent的值,如果它们分别等于pause1,我将忽略该事件。运作良好。也许对于seeked事件可以做类似的事情,检查percent是否等于0并在pause事件之后跟随1

答案 1 :(得分:0)

据我所知,没有办法直接用API修复此问题,我的解决方法是观看进度,检查视频何时快要结束并删除绑定并将进度设置为完成。

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');
    }
})

无论如何,这对于我的情况来说是一个更好的解决方法,因为我们的视频最后都有字幕,并且用户最终在字幕期间点击了该视频,这意味着该视频在技术上从未标记为完整。