最近在使用的时候,谷歌报错: Uncaught (in promise) DOMException: The play() request was interrupted by a call to pause();所以频繁的提示音,后面建议采用静音和取消静音的方案去做;
export class FnAudio {
audio: HTMLAudioElement
playbackRate: number
constructor () {
this.audio = new Audio()
this.playbackRate = 1
}
init () {
this.audio.src = 'https://xx/xx/xxx.wav'
}
currentTime () { // 时间重置
this.audio.currentTime = 0
}
play (callback?: any) { // 播放
try{
this.muted(false);
this.audio.playbackRate = this.playbackRate;
this.audio.currentTime = 0;
this.audio.play().then(() => {
}).catch((error) => {
// if (error.name === 'AbortError') { // 特别处理因pause()调用导致的中断
// console.error('The play() request was interrupted by a call to pause().');
// } else {
// console.error('An error occurred while playing media:', error);
});
} catch(err) {
}
}
/* 谷歌报错: Uncaught (in promise) DOMException: The play() request was interrupted by a call to pause(). */
// 静音
muted(is: boolean) {
this.audio.muted = is;
}
// 设置音量
volume(num: number) {
this.audio.volume = num;
}
pause (callback?: any) { // 暂停
this.audio.pause()
}
}