vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法


Posted in Javascript onOctober 09, 2020

一、vue中解决chrome浏览器自动播放音频

需求

有新订单的时候,页面自动语音提示和弹出提示框;

问题

chrome浏览器在18年4月起,就在桌面浏览器全面禁止了音视频的自动播放功能。严格地来说,是Chrome不允许在用户对网页进行触发之前播放音频。不光是这样,在页面加载完毕的情况下,用户没有click、dbclick、touch等主动交互行为,使用js直接调用.play() 方法的话,chrome都会抛出如下错误:Uncaught (in promise) DOMException;

解决

在网上找了很多方法都不行,最后试出一种可行:语音播放显示出来才可以自动播放语音,如下图;

vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法

上代码:

//这里就是语音播放器,必须显示出来
<audio controls="controls" :src="sound" ref="audio"></audio>
//这里是调用语音播放
this.$refs.audio.currentTime = 0;
this.$refs.audio.play();

功能的全部代码:

<div>
 <v-btn color="lime lighten-1" @click="handleDispatch" small><v-icon left>mdi-account</v-icon>人工派单 </v-btn>
 //这里就是语音播放器,必须显示出来
 <audio controls="controls" :src="sound" ref="audio"></audio>
</div>

<script>
//语音的路径(这样引入是方便打包上传,下面有介绍)
import sounds from '@/assets/sound/1.mp3';
export default {
 data() {
 return {
 sound: sounds,
}
 }
mounted() {

//这是列表的分页查询
 this.getLinePageWithParams();

//这里因为后端没使用websocket,就1分钟循环调用一次;
 this.timer = setInterval(() => {
 this.newOreder();
 }, 60000);
 },

 methods: {
 newOreder() {
 api.main.op_order_existNewOrder_get().then(res => {
  if (res.data.success) {




//res.data.data后端返回的是否有新订单,有:true; 没有:false
  if (res.data.data) {
  this.$refs.audio.currentTime = 0;
  this.$refs.audio.play();
  // element ui 右上角提示窗
  this.$notify({
  title: '新订单',
  message: '您有新的订单待处理',
  });
  this.getLinePageWithParams();
  }
  }
  return res;
 })
 .catch(() => {});
 },
}

二、MP3文件上传到线上,webpack打包丢失

vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法

去看webpack.config.js文件的配置,这里MP3会打包到media文件,但是没生成;

{
 test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
 use: [
  {
  loader: 'url-loader',
  options: {
  limit: 4096,
  fallback: {
  loader: 'file-loader',
  options: {






   name: 'media/[name].[hash:8].[ext]',
  },
  },
  },
  },
 ],
 },

最后去看webpack官方文档,解决是要在使用语音的地方,当模块import引入,才会打包;

<script>
//语音的路径(当模块引入,webpack好将MP3打包)
import sounds from '@/assets/sound/1.mp3';
export default {
 data() {
 return {
 sound: sounds,
}
 }

最后就打包成功

vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法

最后看到一种,直接URL使用百度播报,我没试过o.o 他的微博:以下代码来自https://www.cnblogs.com/gfweb/p/11726365.html

1,在工具文件夹utils,创建一个js文件 (voicePrompt.js)

function voicePrompt (text){
 new Audio('http://tts.baidu.com/text2audio?cuid=baiduid&lan=zh&ctp=1&pdt=311&tex=' + text).play();
}
 
export {
 voicePrompt
}

2在min.js

import * as voicePromptFun from './utils/voicePrompt' 
Vue.prototype.voicePrompt = voicePromptFun.voicePrompt //语音提醒

3在其他页面调用

this.voicePrompt('皮卡丘');

到此这篇关于vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法的文章就介绍到这了,更多相关vue chrome浏览器自动播放音频内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
javascript之水平横向滚动歌词同步的应用
May 07 Javascript
理解Javascript_07_理解instanceof实现原理
Oct 15 Javascript
基于mootools 1.3框架下的图片滑动效果代码
Apr 22 Javascript
各浏览器对document.getElementById等方法的实现差异解析
Dec 05 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
Aug 07 Javascript
js实现带圆角的两级导航菜单效果代码
Aug 24 Javascript
基于jQuery Circlr插件实现产品图片360度旋转
Sep 20 Javascript
简单谈谈JavaScript的同步与异步
Dec 31 Javascript
JavaScript DOM 对象深入了解
Jul 20 Javascript
网站发布后Bootstrap框架引用woff字体无法正常显示的解决方法
Nov 24 Javascript
利用adb shell和node.js实现抖音自动抢红包功能(推荐)
Feb 22 Javascript
layui 设置table 行的高度方法
Aug 17 Javascript
vue实现选中效果
Oct 07 #Javascript
electron踩坑之dialog中的callback解决
Oct 06 #Javascript
electron踩坑之remote of undefined的解决
Oct 06 #Javascript
9个JavaScript日常开发小技巧
Oct 06 #Javascript
详解ES6中class的实现原理
Oct 03 #Javascript
在vue中使用Echarts画曲线图的示例
Oct 03 #Javascript
vue 虚拟DOM的原理
Oct 03 #Javascript
You might like
在PHP中使用redis
2013/11/04 PHP
Zend Framework实现多文件上传功能实例
2016/03/21 PHP
PHP设计模式之模板方法模式定义与用法详解
2018/04/02 PHP
解析使用js判断只能输入数字、字母等验证的方法(总结)
2013/05/14 Javascript
开发插件的两个方法jquery.fn.extend与jquery.extend
2013/11/21 Javascript
一个CSS+jQuery实现的放大缩小动画效果
2014/02/19 Javascript
express的中间件cookieParser详解
2014/12/04 Javascript
js实现在网页上简单显示时间的方法
2015/03/02 Javascript
JavaScript显示表单内元素数量的方法
2015/04/02 Javascript
js+html5绘制图片到canvas的方法
2015/06/05 Javascript
javascript动态生成树形菜单的方法
2015/11/14 Javascript
JS实现随页面滚动显示/隐藏窗口固定位置元素
2016/02/26 Javascript
JS封装通过className获取元素的函数示例
2016/12/20 Javascript
bootstrap实现动态进度条效果
2017/03/08 Javascript
vuex实现像调用模板方法一样调用Mutations方法
2019/11/06 Javascript
vue列表数据发生变化指令没有更新问题及解决方法
2020/01/16 Javascript
基于JS实现视频上传显示进度条
2020/05/12 Javascript
JavaScript实现滚动加载更多
2020/12/27 Javascript
Python简单计算文件夹大小的方法
2015/07/14 Python
Python计算字符宽度的方法
2016/06/14 Python
使用python在本地电脑上快速处理数据
2017/06/22 Python
python判断设备是否联网的方法
2018/06/29 Python
python的faker库用法
2019/11/28 Python
py-charm延长试用期限实例
2019/12/22 Python
Python之关于类变量的两种赋值区别详解
2020/03/12 Python
浅谈python处理json和redis hash的坑
2020/07/16 Python
Python中Selenium模块的使用详解
2020/10/09 Python
Python的logging模块基本用法
2020/12/24 Python
Ariat英国官网:为世界顶级马术运动员制造最优质的鞋类和服装
2020/02/14 全球购物
AJAX的优缺点都有什么
2015/08/18 面试题
会计专业自我评价
2014/02/12 职场文书
农村面貌改造提升实施方案
2014/03/18 职场文书
个人债务授权委托书范本
2014/10/05 职场文书
电影雷锋观后感
2015/06/10 职场文书
Javascript中的解构赋值语法详解
2021/04/02 Javascript
中国十大神话动漫电影排行榜 哪吒登顶 白蛇缘起排第七
2022/03/21 国漫