mediaelement'播放'事件跟踪

时间:2012-10-06 23:36:54

标签: javascript javascript-events mediaelement.js

我有以下简单的代码启动mediaelement音频插件:

$('audio,video').mediaelementplayer({
    audioWidth: 300,
    audioHeight: 30
});

我需要跟踪playing事件;我没有运气就试过以下代码:

var player = document.getElementsById('player2');
player.playing = function(e) {
   alert('OMG! You played a song!');
}

3 个答案:

答案 0 :(得分:5)

试试这个:

# using jquery (on, bind, etc)...
$('#player1').bind('playing', function(e) { 
   console.log('bind - playing') 
});

# addEventListener 
var player = document.getElementById('player1'); 
player.addEventListener('playing', function(e) {
   console.log('addEventListener - playing') ;
});

答案 1 :(得分:4)

好的,我已经弄清楚了......

$('audio,video').mediaelementplayer({
    audioWidth: 300,
    audioHeight: 30,

    success: function(mediaElement, domObject) {
        mediaElement.addEventListener('loadeddata', function() {
            console.log('addEventListener - loadeddata')            
        }, false);
    },
    error: function() {
        //alert('Error setting media!');
    }

});

答案 2 :(得分:0)

有点晚了,但必须自己解决。我注意到MediaElement文档说成功函数的第一个参数是mediaElement对象。碰巧的是,播放器html包裹在一个元素中,无论它是哪种视频类型。您无法直接将其作为jQuery对象访问,但只需进行简单的调整即可解决所有问题。

以下内容用于获取最接近的玩家,无论您传入哪个元素

function getVideo(el) {
    var $el = $(el);

    if ($el.find('mediaelementwrapper').length) {
        return $el.find('mediaelementwrapper')[0];
    } else if ($el.parents('mediaelementwrapper').length) {
        return $el.parents('mediaelementwrapper')[0];
    }

    return $el.is('mediaelementwrapper') ? $el : false;
}

请注意,我们必须通过[0]返回文档节点而不是jQuery对象来访问它。

但是从那里我们可以像这样使用它。

$video = getVideo('#playerID');

$video.addEventListener('playing', function () {
    debugger;
}, false);

或者在没有帮助者的情况下完成

$video = jQuery('#playerID mediaelementwrapper')[0];