<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で機能しないのですか?
編集:たまたま、上記の簡略化されたテストケースは実際に機能します。以下の@apsillersの回答とそれに関する私のコメントを参照してください。