Chrome66禁止进入页面自动播放音频解决方案,Uncaught (in promise) DOMException: play() failed because the user didn
Chrome浏览器66版本以后都禁止用户进入页面自动触发audio或video自动播放
必须用户手动点击播放才可以播放 所以就来个一个这样的报错
想大厂们 例如:优酷 腾讯 爱奇艺面对Chrome都采取了相关措施:引导用户点击开启声音或者进入页面后默认静音。
上面两种方案都是可行的 我做的vue+node+socket.io中监听了一个用户列表进入聊天室触发提示音的 具体如下
默认进入页面静音 给audio加上muted
加个watch
watch: { isOpenMusic: { handler(val) { if (val) { this.$refs.audio.muted = ""; console.log("有声音"); } else { this.$refs.audio.muted = "muted"; console.log("静音"); } }, }, },
给个按钮动态切换
<i class="iconfont" style="font-size: 1.2rem; cursor: pointer; color: #ffffff" :class="[isOpenMusic ? 'icon-shengyin' : 'icon-shengyinguanbi']" @click="isOpenMusic = !isOpenMusic" >
methods上
audioPlay() { setTimeout(() => { this.$refs.audio.play(); }, 10); },
sockets钩子
socket:{ //监听用户列表 updateUserList(data) { this.loginUserList = data; if (this.isOpenMusic) { this.audioSrc = require("../assets/上线.wav"); this.audioPlay(); } }, }
这样 默认用户进来页面声音就是关的 需要自己手动点击打开声音才会听到聊天室用户列表的更新