2014-09-01 90 views
2

我正尝试在我们的网站上使用mediaelement.js播放视频。我们希望在主视频前呈现广告视频。跟踪,哪些广告被查看了多少次,当广告完成时,我想发送一个ajax-call到我的自定义php脚本。mediaelement.js:收听由mep-feature-ads触发的事件

我的问题是,当mep-feature-ads功能adsPrerollEnded触发回调我不能添加一个侦听正确的项目:

adsPrerollEnded: function() { 
    console.log('adsPrerollEnded'); 

    var t = this; 

    t.container.trigger('mejsprerollended'); 

    t.adRestoreMainMedia(); 
}, 

在我的代码看起来像时间:

<script> 
$(function() { 
    $('audio,video').mediaelementplayer({ 
     features: ['playpause','progress','current','duration','volume','fullscreen','ads'], 
     adsPrerollMediaUrl: '../media/echo-hereweare.mp4', 
     success: function (mediaElement, domObject) { 
      // add event listener 
      mediaElement.addEventListener('mejsprerollended', function(e) { 
       alert('ad is over, do ajax now'); 
      }, false);   

      // call the play method 
      mediaElement.play(); 
     }, 
    }); 
}); 
</script> 

,但警报永远不会被解雇,除此之外,所有其他功能都可以正常工作(广告在mainvideo之前播放,并且在广告期间,mainvideo启动后的广告中没有任何控件可用)。

我认为ads-feature中的t.container和成功函数中的mediaElement不一样。

console.log()的一些研究我想通了,t.container<div id="mep_0"元素。 mediaElement<video>标签在class=mejs-inner安葬和class=mejs-mediaelement

让我怎么上mejsprerollended注册一个监听器?

回答

1

我想通了自己:

MEJS被使用jQuery .trigger功能,所以我必须使用jQuery的事件监听注册功能.on

var player = new MediaElementPlayer('#video',{ 
    features: ['playpause','progress','current','duration','volume','fullscreen','ads'], 
    adsPrerollMediaUrl: '../media/echo-hereweare.mp4', 
}); 
player.container.on('mejsprerollended',function(e){ 
    alert('ad is over!'); 
});