audio的自动播放报错解决

简介: 使用audio标签时,当前页面没有进行交互时,比如用户刷新了页面后,play()调用就会报错,要如何解决?

使用audio标签时,当前页面没有进行交互时,比如用户刷新了页面后,play()调用就会报错,如下图:

audio的自动播放报错-1.jpg

查找资料后,发现是2018年4月以后,chrome浏览器对这块进行了优化,为了节约流量,禁止了自动播放,必须由用户交互后才能触发。

当用户点击网页后,点击任何位置都行,andio就能自动播报了,然后我就想了个方案,设置个按钮,让按钮自动点击,然后触发audio,然而发现这种作弊方案,仍旧不行 后来各种找方法,标签加muted属性仍于事无补,到最后也只有没有办法的办法。

由于play()方法是一个promise,监听它的成功和失败状态,如果失败,那就提醒用户进行交互,设置一个激活按钮,点击后就能触发了。

1 <template>
 2     <el-button class="autoPlay" type="text" v-if="isShow" @click="autoPlay">激活</el-button>
 3     <!-- audio宽度设0,让其隐藏 -->
 4     <audio muted controls ref="audio" :src="audioSrc" style="width: 0px;"></audio>
 5 </template>
 6 import newOrder from '@/assets/audio/new_order.mp3'
 7 
 8 export default {
 9   data () {
10     return {
11       audioSrc: newOrder,
12       isShow: false
13     }
14   },
15   created() {
16     this.open()
17   },
18   methods: {
19     open() {
20       const myAudio =  document.getElementsByTagName('audio')[0]
21       if (myAudio.canPlayType) {
22         this.autoPlay()
23       } else {
24         this.$message({
25           type: 'error',
26           message: '您的浏览器不支持语音播报'
27         })
28       }
29     },
30     // 自动播放
31     autoPlay() {
32       this.$refs.audio.play().then(() => {
33         this.isShow = false
34       }).catch(() => {
35         this.$message({
36           type: 'error',
37           message: '语音播报失效,点击右上角"激活"按钮'
38         })
39         this.isShow = true
40       })
41     }
42   }
43 }
相关文章
|
算法 Java 开发工具
Magisk模块:Audio HeadQuarter(使用前仔细阅读)
Magisk模块:Audio HeadQuarter(使用前仔细阅读)
842 0
|
小程序
小程序 video 组件播放本地视频(黑屏无法播放,报错:MEDIA_ERR_SRC_NOT_SUPPORTED)
小程序 video 组件播放本地视频(黑屏无法播放,报错:MEDIA_ERR_SRC_NOT_SUPPORTED)
613 0
|
6月前
|
JavaScript
video-08-videojs黑屏问题(详解总结)
video-08-videojs黑屏问题(详解总结)
322 1
|
6月前
video-04-videojs配置及使用
video-04-videojs配置及使用
230 1
|
6月前
|
移动开发 JavaScript Android开发
H5 video 自动播放(autoplay)不生效解决方案
H5 video 自动播放(autoplay)不生效解决方案
649 0
|
小程序 API
小程序背景音乐及音频播放demo(copy直接使用~)
小程序背景音乐及音频播放demo(copy直接使用~)
274 0
小程序背景音乐及音频播放demo(copy直接使用~)
|
JavaScript
js监听audio播放完毕-重置音频
js监听audio播放完毕-重置音频
|
编解码 计算机视觉 Windows
Qt实用技巧:使用QMediaPlayer和Windows自带组件播放swf、rmvb、mpg、mp4等视频文件
Qt实用技巧:使用QMediaPlayer和Windows自带组件播放swf、rmvb、mpg、mp4等视频文件
Qt实用技巧:使用QMediaPlayer和Windows自带组件播放swf、rmvb、mpg、mp4等视频文件
|
前端开发
video标签自动播放视频
video标签自动播放视频
371 0