// Works fine on all browsersconstructor: (@_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 iPadconstructor: (@_button,@_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的回答以及我对它的评论.
解决方法 见 Apple’s iOS considerations guide:…the JavaScript
play()
andload()
methods are also inactive until the user initiates playback,unless theplay()
orload()
method is triggered by user action. In other words,a user-initiated Play button works,but anonLoad="play()"
event does not.
尽管setTimeout()本身位于用户启动的函数中,但似乎您的setTimeout()回调不符合用户启动的 *** 作.
建议:我没有要测试的iOS设备,但是当用户按下按钮时可能正在进行初始播放/暂停将减轻此限制.也就是说,你调用play()然后立即暂停它,然后使用play()调用调用animate和setTimeout()函数.这使得用户启动的功能让iOS知道将来加载和播放此视频是可以的.
总结以上是内存溢出为你收集整理的javascript – HTML5音频对象无法在iPad上播放(从setTimeout调用时)全部内容,希望文章能够帮你解决javascript – HTML5音频对象无法在iPad上播放(从setTimeout调用时)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)