糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > vue提示音_vue中使用audio标签进行消息提示

vue提示音_vue中使用audio标签进行消息提示

时间:2021-05-06 13:06:29

相关推荐

vue提示音_vue中使用audio标签进行消息提示

本文实现的功能是:有新的消息更新时,页面会播放提示音,提示的声音会播放15秒,然后停止播放,如果在停止播放之前又有新的消息进来,则会重新计时15秒。

首先,添加audio标签,引入资源文件。

在audio标签中存在如下属性:

autoplay:是否音频在就绪后马上播放。

controls:是否向用户显示控件,比如播放按钮。

loop:是否音频结束时重新开始播放。

preload:是否音频在页面加载时进行加载,并预备播放。如果使用 "autoplay",则忽略该属性。

src:要播放的音频的 URL。

HTML5 audio支持的音频格式有wav,mp3和ogg格式。

ogg:一种新的音频压缩格式,是完全免费、开放和没有专利限制的。

mp3:是一种音频压缩技术。它被设计用来大幅度地降低音频数据量。

wav:为微软公司开发的一种声音文件格式,声音文件质量和CD相差无几。

标签是的一个子标签,作用就是用来引入多个音频,浏览器会选择一个支持的音频格式进行加载,对于不支持标签的浏览器,元素也可以作为浏览器不识别的内容加入到文档中。当有多个标签时,默认播放第一个标签。

标签添加完毕以后,就是编写触发事件了。如今如Chrome之类的浏览器,默认情况下,声音自动播放内容会阻止。经过测试,静音的自动播放内容仍会自动播放。使用声音自动播放内容,无论是否具有可见的控件,以及是否设置为循环播放,都不会开始播放。所以我们需要在事件中主动播放音频。播放的代码如下:

play () {this.lastRunTime =Date.now()

let audio= document.querySelector('#audio')if (!this.isPlaying) {

audio.play()this.isPlaying = true}

let timeOut= setTimeout(() =>{this.stop(timeOut)

},15000)

},

stop (timeOut) {this.currentTime =Date.now()

let audio= document.querySelector('#audio')if (this.currentTime - this.lastRunTime < 15000) {

}else{if (this.isPlaying) {

audio.currentTime= 0audio.pause()this.isPlaying = false}

}

clearTimeout(timeOut)

}

标签中的控制函数说明:

load():加载音频、视频软件,通常不必调用,除非是动态生成的元素,用来在播放前预加载

play():加载并播放音频、视频文件,除非文件已经暂停在其他位置,否则默认重头开始播放

pause():暂停处于播放状态的音频、视频文件

此处的lastRunTime用于记录最后一次触发play()方法的时间;document.querySelector('#audio')用于返回匹配指定选择器的第一个元素;isPlaying用于判断此时音频是否在播放;setTimeout()方法用于在指定毫秒数后再调用函数或者计算表达式(以毫秒为单位),返回值为该定时器的标识,此处设置15秒以后执行stop(timeOut)方法;currentTime用于记录执行stop()方法的时间,如果this.currentTime - this.lastRunTime < 15000则表明,在播放音频期间有新的消息进入,所以此时不应该停止播放,否则的话就使用audio.currentTime = 0通过赋值0使得当前播放位置清零;无论此时是否要停止播放,我们都要清除定时器,防止内存溢出clearTimeout(timeOut)。

如果觉得《vue提示音_vue中使用audio标签进行消息提示》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。