• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

vue 搞代码 4年前 (2022-01-08) 43次浏览 已收录 0个评论

这篇文章主要介绍了vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

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

需求

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

问题

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

解决

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

上代码:

 //这里就是语音播放器,必须显示出来 </audio> //这里是调用语音播放 this.$refs.<p style="color:transparent">本文来源gao!daima.com搞$代!码网</p>audio.currentTime = 0; this.$refs.audio.play();

功能的全部代码:

 <div> mdi-account人工派单  //这里就是语音播放器,必须显示出来 </audio></div> //语音的路径(这样引入是方便打包上传,下面有介绍) 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打包丢失

去看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引入,才会打包;

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

最后就打包成功

最后看到一种,直接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浏览器自动播放音频内容请搜索gaodaima搞代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持gaodaima搞代码网

您可能感兴趣的文章:

  • 通过实例解析chrome如何在mac环境中安装vue-devtools插件
  • 详解vue-cli3开发Chrome插件实践
  • 用VueJS写一个Chrome浏览器插件的实现方法
  • vue.js 初体验之Chrome 插件开发实录
  • Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
  • 使用Vue开发自己的Chrome扩展程序过程详解
  • vue开发chrome插件,实现获取界面数据和保存到数据库功能

以上就是vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址