MediaElementJs结束回调未被解雇

时间:2013-02-08 13:25:07

标签: javascript jquery html5 mediaelement.js mediaelement

使用我的网络应用程序使用MediaElementPlayer类时遇到问题。我想要完成的是每次玩家播放曲目时都要触发一个方法。我的代码如下所示:

$(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,但都没有运气。有趣的是,这实际上在昨天工作,今天却没有。

有什么建议吗?谢谢!

2 个答案:

答案 0 :(得分: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 :(得分:1)

在您的mediaelementplayer()函数调用中,请务必不要将“#audio-player”作为第一个参数重复:

$(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");
    });
});

应该解决你的问题。