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 相关文章推荐
input、button的不同type值在ajax提交表单时导致的陷阱
Feb 24 Javascript
Jquery之Ajax运用 学习运用篇
Sep 26 Javascript
分享一个用Mootools写的鼠标滑过进度条改变进度值的实现代码
Dec 12 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
Feb 22 Javascript
js 页面元素的几个用法总结
Nov 18 Javascript
js的隐含参数(arguments,callee,caller)使用方法
Jan 28 Javascript
jQuery使用中可能被XSS攻击的一些危险环节提醒
May 24 Javascript
EasyUI加载完Html内容样式渲染完成后显示
Jul 25 Javascript
vue中用动态组件实现选项卡切换效果
Mar 25 Javascript
详解如何构建Promise队列实现异步函数顺序执行
Oct 23 Javascript
Node.js API详解之 repl模块用法实例分析
May 25 Javascript
ES2020 已定稿,真实场景案例分析
May 25 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
一个可查询所有表的“通用”查询分页类
2006/10/09 PHP
PHP中new static() 和 new self() 的区别介绍
2015/01/09 PHP
PHP获取数组的键与值方法小结
2015/06/13 PHP
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
2007/04/12 Javascript
JQUERY THICKBOX弹出层插件
2008/08/30 Javascript
Javascript 构造函数 实例分析
2008/11/26 Javascript
JQuery 入门实例1
2009/06/25 Javascript
javascript中的107个基础知识收集整理 推荐
2010/03/29 Javascript
javascript实现添加附件功能的方法
2015/11/18 Javascript
jquery+ajax实现注册实时验证实例详解
2015/12/08 Javascript
Javascript基于AJAX回调函数传递参数实例分析
2015/12/15 Javascript
jQuery ajaxForm()的应用
2016/10/14 Javascript
JavaScript异步上传图片文件的实例代码
2017/07/04 Javascript
jQuery DOM节点的遍历方法小结
2017/08/15 jQuery
GOJS+VUE实现流程图效果
2018/12/01 Javascript
简单通过settimeout看javascript的运行机制
2019/05/10 Javascript
JS判断数组是否包含某元素实现方法汇总
2020/06/24 Javascript
vue2.0 watch里面的 deep和immediate用法说明
2020/10/30 Javascript
javascript实现拼图游戏
2021/01/29 Javascript
Python实现多线程的两种方式分析
2018/08/29 Python
python使用matplotlib绘制热图
2018/11/07 Python
对python读取zip压缩文件里面的csv数据实例详解
2019/02/08 Python
Python利用逻辑回归分类实现模板
2020/02/15 Python
Python稀疏矩阵及参数保存代码实现
2020/04/18 Python
PyCharm Community安装与配置的详细教程
2020/11/24 Python
TUMI新加坡官网:国际领先的商旅箱包品牌
2019/01/12 全球购物
医学生自荐信
2013/12/03 职场文书
电子信息专业自荐书
2014/02/04 职场文书
2014年大学生党员自我评议
2014/09/22 职场文书
民事诉讼代理授权委托书范本
2014/10/08 职场文书
道路交通事故赔偿协议书
2014/10/24 职场文书
地震慰问信
2015/02/14 职场文书
超市主管竞聘书
2015/09/15 职场文书
2016学习全国教书育人楷模先进事迹心得体会
2016/01/21 职场文书
Python+Appium新手教程
2021/04/17 Python
Python查找算法的实现 (线性、二分,分块、插值查找算法)
2022/04/24 Python