移动端audio使用的一个注意事项
这几天做移动端的音乐播放,果然是踩坑不断呀!
其中一个就是,做好的播放功能,在pc上可用,在手机上的壳子浏览器可用,可偏偏在原生浏览器和chrome上不行。
折腾了好久(主要还是移动端的调试真心不方便呀),最终定位到问题是:
移动端一个audio对象的第一次播放,必须是一个用户触发的行为。
至少在我目前4.3的三星s4的原生浏览器和chrome31上是这样的,相信在以后的版本上也会是这样。
所以对于异步获取播放的资源链接再进行播放的实现,在这两个浏览器上就会失效。
解决方法:
既然不能异步,最简单的方法就是换成同步呗。当然,这对于项目来说是不现实的……
上面提到,这个限制对于同一个audio对象,只在其初次播放时需要用户行为触发,之后就可以随心所欲的操作了。
所以我所用的方法就是:
全局使用同一个audio对象,并且在用户第一次点播放的时候,在同步阶段,用一个空的音乐(没有声音,播放时长1s)先进行播放,等获取到异步结果后再进行src的替换就行了。