Obiekt audio HTML5 nie jest odtwarzany na iPadzie (po wywołaniu z setTimeout)
Mam stronę z ukrytym<audio>
obiekt, który jest uruchamiany i zatrzymywany za pomocą przycisku niestandardowego za pośrednictwem javascript. (Powodem jest to, że chcę dostosować przycisk, a rysowanie odtwarzacza audio i tak niszczy wydajność renderowania na iPadzie). Uproszczony przykład (w 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
Dźwięk gra dobrze, gdy jest wyzwalany z funkcji powiązanej z aclick
ale chcę, żeby animacja się zakończyła, zanim plik się odtworzy, więc umieściłem.play()
wewnątrz asetTimeout
. Jednak nie mogę tego zrobić:
// 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
Sprawdziłem to@_audio
(this._audio
) jest w zakresie, a jegoplay()
istnieje metoda. Dlaczego to nie działa na iPadzie?
Edytować: Jak to się dzieje, powyższy uproszczony przypadek testowyrobi praca. Zobacz odpowiedź @apsillers poniżej i moje komentarze na jej temat.