iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了javascript – HTML5音频对象无法在iPad上播放(从setTimeout调用时)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个隐藏< 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,@_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的回答以及我对它的评论.

解决方法

@H_944_21@ 见 Apple’s iOS considerations guide

尽管setTimeout()本身位于用户启动的函数中,但似乎您的setTimeout()回调不符合用户启动的操作.

建议:我没有要测试的iOS设备,但是当用户按下按钮时可能正在进行初始播放/暂停将减轻此限制.也就是说,你调用play()然后立即暂停它,然后使用play()调用调用animate和setTimeout()函数.这使得用户启动的功能让iOS知道将来加载和播放此视频是可以的.

大佬总结

以上是大佬教程为你收集整理的javascript – HTML5音频对象无法在iPad上播放(从setTimeout调用时)全部内容,希望文章能够帮你解决javascript – HTML5音频对象无法在iPad上播放(从setTimeout调用时)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。