evenodd evenodd - 28 days ago 9
jQuery Question

How do you detect when HTML5 audio has finished playing (more than once)?

I am having a problem detecting when an tag is finished playing an mp3. When I do something like this:

myAudio.addEventListener("ended", function()
{
alert("ended");
});


It only occurs the first time the audio is played. When I play the audio again, nothing happens. The same thing happens when I use the
onended=doThis();
method. I've heard maybe there is a way to do it in jQuery, but I haven't been able to get it to work. I've also heard there might be a way to fix it by changing the audio div
id
every time the mp3 is played, but this doesn't work for me because I need the
id
to stay the same.

Did anyone get any ideas?

Answer Source

The ended event is created based on .currentTime attribute. http://dev.w3.org/html5/spec/Overview.html#event-media-ended

So, all you have to do is set the .currentTime to zero again.

myAudio.addEventListener("ended", function(){
     myAudio.currentTime = 0;
     console.log("ended");
});