2012-06-19 13 views
18

Estoy teniendo problemas para detectar cuando se termina una etiqueta juega un mp3. Cuando hago algo como esto:¿Cómo se detecta cuando el audio HTML5 ha terminado de reproducirse (más de una vez)?

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

sólo se produce la primera vez que se reproduce el audio. Cuando reproduzco el audio nuevamente, no pasa nada. Lo mismo sucede cuando uso el método onended=doThis();. He escuchado que quizás haya una forma de hacerlo en jQuery, pero no he podido hacer que funcione. También he oído que podría haber una manera de solucionarlo cambiando el div de audio id cada vez que se juega el mp3, pero esto no funciona para mí porque necesito el id a permanecer igual.

¿Alguien recibió alguna idea?

+0

http://jsfiddle.net/MvzFN/2/ (ver/escuchar en cromo): en este caso el violín oneneded parece estar siempre activado – fcalderan

+0

intente crear la etiqueta de audio en HTML y no en javascript. ¿Funciona para ti todavía? – evenodd

+1

si todavía funciona: http://jsfiddle.net/MvzFN/3/ – fcalderan

Respuesta

30

ended El evento se crea basándose en .currentTime atributo. http://dev.w3.org/html5/spec/Overview.html#event-media-ended

Así que, todo lo que tiene que hacer es establecer el .currentTime en cero nuevamente.

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

Eso hizo ¡eso! Pero también tuve que pausarlo antes porque de lo contrario sería solo un ciclo sin fin – evenodd

Cuestiones relacionadas