Аудиообъект HTML5 не воспроизводится на iPad (при вызове из setTimeout)
У меня есть страница со скрытым<audio>
Объект, который запускается и останавливается с помощью пользовательской кнопки с помощью JavaScript. (Причина в том, что я хочу настроить кнопку, а рисование аудиоплеера, похоже, в любом случае снижает производительность рендеринга на iPad). Упрощенный пример (в coffeescript):
// Works fine on all browsers
constructor: (@_button, @_audio) ->
@_button.on 'click', @_play // Bind button's click event with jQuery
_play: (e) =>
@_audio[0].play() // Call play() on audio element
Звук воспроизводится нормально при запуске из функции, связанной сclick
событие, но я на самом деле хочу завершить анимацию до воспроизведения файла, поэтому я поставил.play()
внутриsetTimeout
, Однако я просто не могу заставить это работать:
// Will not play on iPad
constructor: (@_button, @_audio) ->
@_button.on 'click', @_play // Bind button's click event with jQuery
_play: (e) =>
setTimeout (=> // Declare a 300ms timeout
@_audio[0].play() // Call play() on audio element
), 300
Я проверил это@_audio
(this._audio
) находится в области применения и что егоplay()
метод существует. Почему это не работает на iPad?
Edit: Как оказалось, приведенный выше упрощенный тест на самом делеdoes Работа. Смотрите @ apsillers & apos; ответ ниже и мои комментарии к нему.