Pour ajouter un peu plus de conseils combinant les suggestions de @kingjeffrey et @CMS: Vous pouvez utiliser loop
où il est disponible, et de se replier sur kingjeffrey du gestionnaire d'événement quand elle n'est pas. Il y a une bonne raison pour laquelle vous souhaitez utiliser loop
et ne pas écrire votre propre gestionnaire d'événement: Comme indiqué dans l' Mozilla rapport de bogue, tout en loop
actuellement ne tourne pas en boucle de façon transparente (sans bpa) dans n'importe quel navigateur je connais, il est bien sûr possible et susceptible de devenir un standard dans l'avenir. Votre propre gestionnaire d'événement ne sera jamais homogène quel que soit le navigateur (car c'est de la pompe à travers la boucle d'événement JavaScript). Par conséquent, il est préférable d'utiliser des loop
, si possible, au lieu d'écrire votre propre événement. En tant que CMS a souligné dans un commentaire sur Anurag réponse, vous pouvez détecter la prise en charge pour loop
en interrogeant l' loop
variable-si elle est prise en charge, il sera un booléen (false), sinon il ne sera pas défini, comme c'est le cas actuellement dans Firefox.
Mettre ces ensemble:
myAudio = new Audio('someSound.ogg');
if (typeof myAudio.loop == 'boolean')
{
myAudio.loop = true;
}
else
{
myAudio.addEventListener('ended', function() {
this.currentTime = 0;
this.play();
}, false);
}
myAudio.play();