js播放提示音

98 阅读1分钟

最近在使用的时候,谷歌报错: 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()
  }
}