2014-01-05 74 views
1

按照vimeo js-api doc,事件finish - Fires when the video playback reaches the end.Vimeo JS API - Froogaloop - 立即完成事件调用/太早?

出于某种原因,我不能得到这个工作,finish事件总是会立即调用,我做错了什么?

我试图使嵌入式视频在播放完毕后消失。我跟着this example by Drew Baker,但根本无法让finish事件正常呼叫。

我做了一个非常简单的jsbin here来演示这个问题。

此行为似乎发生在Safari,Chrome和Firefox(在Mac上)。

-

JS代码从JSBIN:

$(document).ready(function() { 
    $('iframe.vimeo').each(function(){ 
    Froogaloop(this).addEvent('ready', ready); 
    }); 

    function ready(playerID){ 
    Froogaloop(playerID).addEvent('play', play(playerID)); 
    Froogaloop(playerID).addEvent('seek', seek); 
    Froogaloop(playerID).addEvent('finish', onFinish(playerID)); 

    Froogaloop(playerID).api('play'); 
    } 

    function play(playerID){ 
    alert(playerID + " is playing!!!"); 
    } 

    function seek() { 
    alert('Seeking'); 
    } 

    function onFinish(playerID) { 
    alert(playerID + " finished!!!"); 
    $('#'+playerID).remove(); 
    } 
}); 

回答

3

您正在执行的功能而不是传递函数参照addEvent方法。

Froogaloop(playerID).addEvent('play', play); 
Froogaloop(playerID).addEvent('seek', seek); 
Froogaloop(playerID).addEvent('finish', onFinish); 

注意Froogaloop经过playerID作为参数传递给play回调函数,我不能肯定它通过playerID作为参数传递给finish回调函数(虽然我可能猜它) 。

+0

啊,你是对的。通过将Drew Baker示例与Vimeo文档相结合,我终于可以通过在'addEvent'中不包含playerID来实现它。我更新了[jsbin](http://jsbin.com/OneBIXIc/3/) – waffl