我有一个带有隐藏<audio>
对象的页面,该页面正在通过 javascript 使用自定义按钮启动和停止。(原因是我想自定义按钮,而绘制音频播放器似乎会破坏 iPad 上的渲染性能)。一个简化的例子(在咖啡脚本中):
// 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 的回答和我对此的评论。