2013-02-08 63 views
1

我的网络应用程序使用MediaElementPlayer类时出现问题。我想要完成的是每次玩家完成一首曲目时发射一种方法。我的代码如下所示:MediaElementJs已结束回调未触发

$(document).ready(function() 
{ 
    $('#audio-player').mediaelementplayer("#audio-player", 
    { 
     alwaysShowControls: true, 
     features: ['playpause','volume','progress'], 
     audioVolume: 'horizontal', 
     audioWidth: 400, 
     audioHeight: 120, 
     success: function(mediaElement, domObject) 
     { 
      mediaElement.addEventListener('ended', loadNew, false); 
     } 
    }); 

    function loadNew() 
    { 
     Alert("Track ended callback"); 
    } 

    $(".play-button").click(function() 
    { 
     alert("Load new"); 
    }); 
}); 

我的jQuery版本是1.7.2。我尝试过其他变体,如var player = new Media...,然后player.addEventListener,但都没有任何运气。有趣的是,这实际上昨天工作,今天它没有。

有什么建议吗?谢谢!

回答

3

我已经设法解决它,对于所有未来的读者,代码张贴如下。没有太大的变化,但它的作用像魅力。

$(document).ready(function() 
{ 
    var player = new MediaElementPlayer("#audio-player", 
    { 
     alwaysShowControls: true, 
     features: ['playpause','volume','progress'], 
     audioVolume: 'horizontal', 
     audioWidth: 400, 
     audioHeight: 120, 
     success: function(mediaElement, domObject) 
     { 
      mediaElement.addEventListener('ended', loadNextTrack, false); 
     } 
    }); 

    $(".play-button").click(function() 
    { 
     alert("Load new"); 
    }); 
}); 

function loadNextTrack(mediaElement, domObject) 
{ 
    alert("Next track callback"); 
} 
1

在你mediaelementplayer()调用fonction,确保不重复 “#音频播放器” 作为第一个参数:

$(document).ready(function() 
{ 
    $('#audio-player').mediaelementplayer( 
    { 
     alwaysShowControls: true, 
     features: ['playpause','volume','progress'], 
     audioVolume: 'horizontal', 
     audioWidth: 400, 
     audioHeight: 120, 
     success: function(mediaElement, domObject) 
     { 
      mediaElement.addEventListener('ended', loadNew, false); 
     } 
    }); 

    function loadNew() 
    { 
     Alert("Track ended callback"); 
    } 

    $(".play-button").click(function() 
    { 
     alert("Load new"); 
    }); 
}); 

应该解决您的问题。