Чтобы добавить еще несколько советов, объединяющих предложения @kingjeffrey и @CMS: вы можете использовать loop
там, где он доступен, и использовать обработчик событий kingjeffrey, когда его нет. Есть веская причина, почему вы хотите использовать loop
, а не писать свой собственный обработчик событий: как обсуждалось в сообщении об ошибке Mozilla , в то время как loop
в настоящее время не проходит без проблем (без пробела) любой броузер, о котором я знаю, это, безусловно, возможно и, вероятно, станет стандартом в будущем. Ваш собственный обработчик событий никогда не будет бесшовным в любом браузере (так как он должен прокачивать через цикл событий JavaScript). Поэтому лучше использовать loop
, где это возможно, вместо того, чтобы писать собственное событие. Как указала CMS в комментарии к ответу Anurag, вы можете обнаружить поддержку loop
, запросив переменную loop
- если она поддерживается, она будет булевой (false), в противном случае она будет неопределенной, как в настоящее время. находится в Firefox.
Соединяя их вместе:
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();