移动端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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Ajax和XMLHttpRequest 我们通常将Ajax等同于XMLHttpRequest,但细究起来它们两个是...
    changxiaonan阅读 2,379评论 0 2
  • 本文详细介绍了 XMLHttpRequest 相关知识,涉及内容: AJAX、XMLHTTP、XMLHttpReq...
    semlinker阅读 13,974评论 2 18
  • 看到标题时,有些同学可能会想:“我已经用xhr成功地发过很多个Ajax请求了,对它的基本操作已经算挺熟练了。” 我...
    前端渣渣阅读 6,034评论 1 12
  • AJAX 原生js操作ajax 1.创建XMLHttpRequest对象 var xhr = new XMLHtt...
    碧玉含香阅读 3,523评论 0 7
  • 心情不好,工作上的一滴滴小烦恼,回来什么都不用做,拿起碗筷吃公婆煮的饭,家里还单独给我炒了辣椒菜。 晚上吃了两小碗...
    相思成累阅读 183评论 0 0

友情链接更多精彩内容