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 相关文章推荐
js修改table中Td的值(定义td的双击事件)
Jan 10 Javascript
AngularJS模块管理问题的非常规处理方法
Apr 29 Javascript
jquery选择器简述
Aug 31 Javascript
浅析javascript中的事件代理
Nov 06 Javascript
AngularJS基础 ng-switch 指令简单示例
Aug 03 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(三)
Sep 14 Javascript
Bootstrap Multiselect 常用组件实现代码
Jul 09 Javascript
AugularJS从入门到实践(必看篇)
Jul 10 Javascript
React Native之ListView实现九宫格效果的示例
Aug 02 Javascript
JavaScript如何获取到导航条中HTTP信息
Oct 10 Javascript
Vue 自定义标签的src属性不能使用相对路径的解决
Sep 17 Javascript
Antd表格滚动 宽度自适应 不换行的实例
Oct 27 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小程序自动提交到自助友情连接
2009/11/24 PHP
深入php socket的讲解与实例分析
2013/06/13 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
2013/12/22 PHP
php去除字符串换行符示例分享
2014/02/13 PHP
学习php设计模式 php实现状态模式
2015/12/07 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
2015/12/17 PHP
PHP生成制作验证码的简单实例
2016/06/12 PHP
PHP基于GD库的图像处理方法小结
2016/09/27 PHP
统一接口:为FireFox添加IE的方法和属性的js代码
2007/03/25 Javascript
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
2010/05/15 Javascript
仅Firefox中链接A无法实现模拟点击以触发其默认行为
2011/07/31 Javascript
关于div自适应高度/左右高度自适应一致的js代码
2013/03/22 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
2013/11/21 Javascript
js实现文本框输入文字个数限制代码
2015/12/25 Javascript
JavaScript必看小技巧(必看)
2016/06/07 Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
2016/10/27 Javascript
Javascript中Promise的四种常用方法总结
2017/07/14 Javascript
three.js中文文档学习之通过模块导入
2017/11/20 Javascript
深入浅析var,let,const的异同点
2018/08/07 Javascript
layer弹出层全屏及关闭方法
2018/08/17 Javascript
angular4自定义表单控件[(ngModel)]的实现
2018/11/23 Javascript
JS实现手写 forEach算法示例
2020/04/29 Javascript
Python下rrdtool模块的基本使用方法
2015/11/13 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
2018/02/21 Python
python检测主机的连通性并记录到文件的实例
2018/06/21 Python
Python搭建代理IP池实现获取IP的方法
2019/10/27 Python
pytorch中的inference使用实例
2020/02/20 Python
python 绘制正态曲线的示例
2020/09/24 Python
Python获取指定网段正在使用的IP
2020/12/14 Python
详解canvas绘制网络字体几种方法
2019/08/27 HTML / CSS
毕业生自荐书
2014/02/03 职场文书
《会走路的树》教后反思
2014/04/19 职场文书
教师思想工作总结2015
2015/05/13 职场文书
nginx对http请求处理的各个阶段详析
2021/03/31 Servers
浅谈Vue的computed计算属性
2022/03/21 Vue.js
Python装饰器详细介绍
2022/03/25 Python