audio.1.html:39 Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first.
一、audio.1.html:39 Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first.
Audio 标签的 autoplay 自动播放功能受限制。
针对于新版谷歌浏览器、火狐浏览器。
对于IE,Edge浏览器还是支持自动播放的。
规则要求:
在用户发生交互的情况下,开启播放。禁止页面加载完,自动播放。
Chrome报错提示最为友善,意思是说,用户还没有交互,不能调play。用户的交互包括哪些呢?包括用户触发的touchend, click, doubleclick或者是 keydown事件,在这些事件里面就能调play.
二、Chrome的autoplay政策在2018年4月做了更改。
新的行为:浏览器为了提高用户体验,减少数据消耗,现在都在遵循autoplay政策,Chrome的autoplay 政策非常简单
-
muted autoplay始终被允许
-
音乐的autoplay 只有在下面集中情况下起作用:
-
有用户行为发生像(click,tap,etc).
-
对于桌面程序,用户已经提前播放了音频
-
对于移动端用户将音频网址home screen.
-
开启配置,解决方案:
1、 打开chrome
2、输入 chrome://flags/#autoplay-policy
3、点击default,选择 Setting No user gesture is required
4、 重启chrome
三、Audio Context
The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page.
使用Audio Context 解决自动播放问题: 新版谷歌浏览器不支持自动播放,火狐 或者Edge浏览器支持
<script> //使用 AudioContext 实现 var ctx = new AudioContext(); //使用Ajax获取音频文件 //var url = 'http://cdn.jnqianle.cn/audio/mouse.mp3'; var url = 'http://cdn.jnqianle.cn/audio/notify1.mp3'; var request = new XMLHttpRequest(); request.open('GET', url, true); request.responseType = 'arraybuffer';//配置数据的返回类型 //加载完成 request.onload = function () { var arraybuffer = request.response; console.info(arraybuffer); ctx.decodeAudioData(arraybuffer, function (buffer) { //处理成功返回的数据类型为AudioBuffer console.info(buffer); //创建AudioBufferSourceNode对象 source = ctx.createBufferSource(); source.buffer = buffer; source.connect(ctx.destination); //指定位置开始播放 source.start(0); console.info(source); }, function (e) { console.info('处理出错'); }); } request.send(); </script>
更多:
分类:
HTML5
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2014-08-22 js获取当前页面的网址域名地址