2011-06-10 30 views
25

Hola Estoy creando un nuevo elemento de etiquetas de audio en Javascript El código:Adición de detector de eventos para la etiqueta HTML5 de audio en javascript

var audio = document.createElement("audio"); 
audio.setAttribute("id","myid"); 
audio.setAttribute("autoplay","autoplay"); 
document.body.appendChild(audio); 

antes de añadir al cuerpo, me gustaría hacer un onended controlador de eventos, he intentado algo como esto:

audio.onended = foo; 

donde foo es algo así como: function foo() {alert ('hola')}

y

audio.setAttribute("onended","foo()"); 

en ambos casos no funcionó. En el primer caso, la etiqueta de audio se agrega sin ningún controlador de eventos activado; mientras que en el segundo caso se agrega la etiqueta de audio, el evento activado está en los atributos pero no se activa.

¿alguien tiene alguna idea?

gracias de antemano.

Z-

Respuesta

52

intento:

audio.addEventListener('ended', foo); 

Este es el método correcto y estándar de añadir detectores de eventos.

+0

Tiene usted razón, muchas gracias .. – Zeta

+2

Antes de que me topé con esta respuesta, he intentado, $ (audio) .bind ('onended') No sorprendentemente, no funcionó. La tuya y también $ (audio) .bind ('finalizado'). No puedo decidir cuál me gusta más ... en código dependiente de jquery. – KateYoak

+1

En el código dependiente de jQuery, donde todos sus enlaces se realizan a través de jQuery, no hay ninguna razón para hacer una excepción cuando se trata de elementos de audio. – Variant

3

En primer lugar, asegurarse de si el elemento de audio tiene el evento antes de usarla, supongamos que el HTMLAudioElement es de audio, puede probarlo de esta forma audio.hasOwnProperty('onended')

Basado en mi navegador, que no es compatible.

1

yo encontramos este jsFiddle muy útil de Google:

{Code on /*jsFiddle*/} 
Cuestiones relacionadas