错误信息:
Uncaught (in promise) DOMException: play() can only be initiated by a user gesture.
问题描述:
有一个这样的用户需求:用户点击播放按钮后,获取播放资源路径然后再播放音乐。
通过异步网络请求 (axios、XMLHttpRequest)
获取到资源后调用 audio.play()
得到上面的错误信息。
问题原因
移动端播放音频视频必须是经过用户的操作才能执行;如果异步操作超过1000毫秒, 就会抛出上面的异常, 浏览器就不会把这个操作认为是来自用户的操作。
解决方案
使用 xhr
同步请求代替一步请求:
xhr.open('GET', URL, false);
网友评论