移动端Chrome Audio问题

错误信息:
Uncaught (in promise) DOMException: play() can only be initiated by a user gesture.

问题描述:
有一个这样的用户需求:用户点击播放按钮后,获取播放资源路径然后再播放音乐。
通过异步网络请求 (axios、XMLHttpRequest) 获取到资源后调用 audio.play() 得到上面的错误信息。

问题原因
移动端播放音频视频必须是经过用户的操作才能执行;如果异步操作超过1000毫秒, 就会抛出上面的异常, 浏览器就不会把这个操作认为是来自用户的操作。

解决方案
使用 xhr 同步请求代替一步请求:

 xhr.open('GET', URL, false);

你可能感兴趣的:(移动端Chrome Audio问题)