3

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

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

我需要跟踪playing事件;我已经尝试了以下代码,但没有任何运气:

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

3 回答 3

8

试试这个:

# 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') ;
});
于 2012-10-06T23:54:18.787 回答
7

好的,所以我想通了...

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

});
于 2012-10-08T01:57:44.120 回答
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];
于 2018-10-12T05:25:25.880 回答