O objeto de áudio HTML5 não é reproduzido no iPad (quando chamado de um setTimeout)
Eu tenho uma página com um oculto<audio>
objeto que está sendo iniciado e interrompido usando um botão personalizado via javascript. (O motivo é que eu quero personalizar o botão, e desenhar um player de áudio parece destruir o desempenho de renderização no iPad). Um exemplo simplificado (em 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
O áudio toca bem quando disparado de uma função ligada a umclick
evento, mas eu realmente quero uma animação para completar antes do arquivo joga então eu coloquei.play()
dentro de umsetTimeout
. No entanto, não consigo fazer isso funcionar:
// 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
Eu verifiquei isso@_audio
(this._audio
) está no escopo e queplay()
método existe. Por que isso não funciona no iPad?
Editar: Como acontece, o caso de teste simplificado acima, na verdadefaz trabalhos. Veja a resposta dos @apsillers abaixo e meus comentários sobre isso.