Сбой обратного вызова HTML5 Audio в Safari/iOS

Я создал приложение, предназначенное для воспроизведения каждого звука по мере завершения первого с помощью события 'end'.

В моей первоначальной версии каждый звук имеет свой собственный элемент audio, что приводит к чему-то вроде:

   function play_next_audio(){
        speaker = $('audio#' + sounds[i++]).get(0);
        speaker.addEventListener('ended',play_next_audio);
        speaker.play();
   }

Это прекрасно работает во всех настольных браузерах, включая Safari, но не выходит за пределы самой первой буквы в iOS.

Я также пробовал другой подход — одиночный аудиоэлемент, загружающий каждый звук по очереди. Там я экспериментировал с привязкой события «завершение», а также с загрузкой первого и привязкой события «canplaythrough». В обоих случаях не работает даже на десктопном Safari — на этот раз удачно воспроизводятся первые две буквы.

Вот изолированный тест:

http://dev.connectfu.com:42001/app/test-sounds.html

Обратите внимание, что audio.load() закомментирован в нескольких местах – если или вне, кажется, не имеет значения.

Что я делаю не так? Как я могу воспроизвести серию звуков на iOS? Большое спасибо за помощь!

6
задан KateYoak 11 June 2012 в 19:33
поделиться