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 统计时间
Mar 09 Javascript
jQuery Dialog 弹出层对话框插件
Aug 09 Javascript
Dom在ajax技术中的作用说明
Oct 25 Javascript
jQuery学习笔记之总体架构
Jun 03 Javascript
jQuery EasyUI datagrid实现本地分页的方法
Feb 13 Javascript
浅谈Sizzle的“编译原理”
Apr 14 Javascript
学习javascript面向对象 掌握创建对象的9种方式
Jan 04 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
Dec 12 Javascript
详解React之key的使用和实践
Sep 29 Javascript
angular6的table组件开发的实现示例
Dec 26 Javascript
Angular中使用ng-zorro图标库部分图标不能正常显示问题
Apr 22 Javascript
jQuery加PHP实现图片上传并提交的示例代码
Jul 16 jQuery
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
ftp类(myftp.php)
2006/10/09 PHP
说说PHP的autoLoad自动加载机制
2012/09/27 PHP
php旋转图片90度的方法
2013/11/07 PHP
php+ajax实现无刷新动态加载数据技术
2015/04/28 PHP
phpinfo()中Loaded Configuration File(none)的解决方法
2017/01/16 PHP
php二维码生成以及下载实现
2017/09/28 PHP
表单验证的完整应用案例探讨
2013/03/29 Javascript
JS获得图片alt信息的方法
2015/04/01 Javascript
简介JavaScript中的sub()方法的使用
2015/06/08 Javascript
BootStrap下拉框在firefox浏览器界面不友好的解决方案
2016/08/18 Javascript
值得学习的bootstrap fileinput文件上传工具
2016/11/08 Javascript
AngularJS ui-router (嵌套路由)实例
2017/03/10 Javascript
基于vue.js中事件修饰符.self的用法(详解)
2018/02/23 Javascript
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
2018/04/26 jQuery
Bootstrap模态对话框中显示动态内容的方法
2018/08/10 Javascript
js字符串类型String常用操作实例总结
2019/07/05 Javascript
利用layer实现表单完美验证的方法
2019/09/26 Javascript
[54:08]LGD女子刀塔学院 DOTA2炼金术士教学
2014/01/09 DOTA
[48:37]EG vs OG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python时间戳与时间字符串互相转换实例代码
2013/11/28 Python
python抓取豆瓣图片并自动保存示例学习
2014/01/10 Python
Python多线程编程简单介绍
2015/04/13 Python
使用70行Python代码实现一个递归下降解析器的教程
2015/04/17 Python
在python win系统下 打开TXT文件的实例
2018/04/29 Python
详解python异步编程之asyncio(百万并发)
2018/07/07 Python
python实现网站微信登录的示例代码
2019/09/18 Python
Keras实现支持masking的Flatten层代码
2020/06/16 Python
CSS3实现任意图片lowpoly动画效果实例
2017/05/11 HTML / CSS
CSS3 实用技巧:实现黑白图像效果示例代码
2013/07/11 HTML / CSS
New Balance比利时官方网站:购买鞋子和服装
2021/01/15 全球购物
教师党员公开承诺书
2014/03/25 职场文书
捐款倡议书怎么写
2014/05/13 职场文书
工商干部先进事迹
2014/05/14 职场文书
医学生自荐信范文
2015/03/05 职场文书
python实现大文本文件分割成多个小文件
2021/04/20 Python
Win11 BitLocker 驱动器加密
2022/04/19 数码科技