哥伦布

Chrome66禁止进入页面自动播放音频解决方案,Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first

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"
      ></i>

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();
      }
    },
}
复制代码

这样 默认用户进来页面声音就是关的 需要自己手动点击打开声音才会听到聊天室用户列表的更新

 

posted @   南柯Dream丶  阅读(748)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示