audio自动、循环播放,调节音量DOMException: play() failed because the user didn‘t interact with the document firs

news/2024/7/10 2:32:40 标签: vue, audio

最近想做一个,打开页面自动播放背景音乐的效果,寻思使用audio播放不就好了。
答案肯定是不好使!!!,好使也不用我在这里总结了。

刚兴趣的小伙伴可以去看audio-play-demo,里面有我实际实现自动播放、循环播放,调节音量功能的代码

一、报错提示

Uncaught (in promise) DOMException: play() failed because the user didn’t interact with the document

搜索发现Chrome 66为了避免标签产生随机噪音禁止没有交互前使用js进行播放。

谷歌解决方案:
在chrome地址栏输入chrome://flags/。设置Autoplay policy为No user gesture is required

火狐解决方案:
设置 — 隐私与安全 — 自动播放 – 设置改为:允许音频和视频

audio_16">二、使用audio

在这里插入图片描述

// template
<audio ref="audioId" src="~@/assets/xxxx.mp3" loop ></audio>

// script
//自动播放
this.$refs.audioId.play()

//循环播放 有两种方式
//方法一
this.$refs.audioId.onended = () =>{
  //重新加载
  this.$refs.audioId.load();
  // this.$refs.audioId.play();
}

//方法二
audio  标签添加  loop 属性

三、自定义音量

我这里引入了mint ui 的range组件,(主要是懒得再实现一个滑块功能了)

//引入mint ui
cnpm i --save mint-ui
//template
 <sectionclass="volume-box">
   <div class="ul">
     <div class="li">
       <p class="name">背景音量</p>
       <mt-range v-model="backValue" class="val"></mt-range>
     </div>
   </div>
 </section>

//script
watch :{
    backValue (val) {
      this.$refs.audioId.volume = val / 100
      console.log(val / 100)
    }
}

四、停止播放

this.$refs.audioId.pause()

http://www.niftyadmin.cn/n/1558104.html

相关文章

vscode 配置 eslint 自动格式化问题;或者项目根目录配置.esliintc.js

前端合作开发有个很严重的问题&#xff0c;就是大多数人的开发风格是不太一样的&#xff0c;那么合作开发时如何保持统一呢&#xff1f; 我们可以借助eslint&#xff0c;开发代码尽可能的规范化&#xff0c;那么风格自然也就大同小异了。 vscode 商店 首选去vscode商店&…

DeepMind新成果:不可解释的神经元并不比可解释神经元作用小

作者 | Debra编辑 | EmilyAI 前线导读&#xff1a;深度神经网络由许多单独的神经元组成&#xff0c;它们以复杂且违反直觉的方式组合起来&#xff0c;以解决各种具有挑战性的任务。这种复杂性赋予了神经网络神奇的力量&#xff0c;但也给它们带来了不好的名声&#xff1a;混乱、…

VuePress生成器,以md文件生成文档说明

开发一个自己的组件库&#xff0c;那么如何提供说明文档呢&#xff1f; 大家当然可以动手开发一个&#xff0c;但是代价无疑有点大&#xff0c;那么有什么速成的方法吗&#xff1f; 当然有&#xff01;&#xff01;&#xff01;&#xff0c;VuePress就可以很好的实现我们的诉求…

Oracle集合

1 --union 并集2 select * from emp where ename like %A% union3 select * from emp where ename like %M%;4 --union all 集并 公共部分 会包含二次5 select * from emp where ename like %A% 6 union all 7 select * from emp where ename like %M%; 8 --interser…

ajax、axios、fetch区别

随着互联网的高速发展以及IT开发技术的升级&#xff0c;前后端分离已成为互联网项目开发的业界标准使用方式。 那么前后端如何通讯建立连接呢&#xff1f; 这时候就需要用到ajax、axios、fetch。 但是他们又有什么不同呢&#xff1f;我们一起来学习一下。 一、ajax学习 aja…

控制input只能输入数字和两位小数

<input type"text" name"je" οnkeyup"clearNoNum(this)" /> function clearNoNum(obj){ obj.value obj.value.replace(/[^\d.]/g,""); //清除"数字"和"."以外的字符 obj.value obj.value.replace(/^\./g…

mac 更新node,不要在去删除下载了,使用nvm 切换不同node版本

首先安装Homebrew 是一款Mac OS平台下的软件包管理工具&#xff0c;拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令&#xff0c;就可以实现包管理&#xff0c;而不用你关心各种依赖和文件路径的情况&#xff0c;十分方便快捷。 Homebrew的安装比较费劲&a…