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 相关文章推荐
jQuery 位置插件
Dec 25 Javascript
javascript实现简单的鼠标拖动效果实例
Apr 10 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
Jul 22 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
Sep 04 Javascript
jQuery ajax时间差导致的变量赋值问题分析
Jan 22 Javascript
AngularJS在IE下取数据总是缓存问题的解决方法
Aug 05 Javascript
利用yarn实现一个webpack+react种子
Oct 25 Javascript
Vue组件的使用教程详解
Jan 05 Javascript
小程序扫描普通链接二维码跳转小程序指定界面方法
May 07 Javascript
谈谈JavaScript令人迷惑的==与+
Aug 31 Javascript
详解JavaScript中分解数字的三种方法
Jan 05 Javascript
原生js拖拽功能制作滑动条实例代码
Feb 05 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删除数组中的特定元素的代码
2012/06/28 PHP
PHP 5.5 创建和验证哈希最简单的方法详解
2013/11/07 PHP
使用PHP导出Redis数据到另一个Redis中的代码
2014/03/12 PHP
php中switch语句用法详解
2015/08/17 PHP
深入讲解PHP的Yii框架中的属性(Property)
2016/03/18 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
2019/10/24 PHP
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
2011/01/12 Javascript
文本框input聚焦失焦样式实现代码
2012/10/12 Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
2014/04/25 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
2016/12/02 Javascript
jQuery实现的背景颜色渐变动画效果示例
2017/03/24 jQuery
js实现点击切换checkbox背景图片的简单实例
2017/05/08 Javascript
js如何获取图片url的Blob值并预览示例代码
2019/03/07 Javascript
vue进入页面时滚动条始终在底部代码实例
2019/03/26 Javascript
vue cli3.0 引入eslint 结合vscode使用
2019/05/27 Javascript
微信小程序使用echarts获取数据并生成折线图
2019/10/16 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
微信小程序向Java后台传输参数的方法实现
2020/12/10 Javascript
一起来了解一下JavaScript的预编译(小结)
2021/03/01 Javascript
[01:01:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第一场 3月4日
2021/03/11 DOTA
Python使用re模块正则提取字符串中括号内的内容示例
2018/06/01 Python
python使用numpy读取、保存txt数据的实例
2018/10/14 Python
基于Python检测动态物体颜色过程解析
2019/12/04 Python
Python配置pip国内镜像源的实现
2020/08/20 Python
python爬虫使用scrapy注意事项
2020/11/23 Python
用 python 进行微信好友信息分析
2020/11/28 Python
详解CSS3中常用的样式【基本文本和字体样式】
2020/10/20 HTML / CSS
英国工作场所设备购买网站:Slingsby
2019/05/03 全球购物
初中音乐教学反思
2014/01/12 职场文书
建筑工地标语
2014/06/18 职场文书
2014年九一八事变演讲稿
2014/09/14 职场文书
公司合作协议范文
2014/10/01 职场文书
活动总结书怎么写
2015/05/11 职场文书
面试中canvas绘制图片模糊图片问题处理
2022/03/13 Javascript
《游戏王:大师决斗》新活动上线 若无符合卡组可免费租用
2022/04/13 其他游戏
MySQL 执行数据库更新update操作的时候数据库卡死了
2022/05/02 MySQL