The play() request was interrupted by a new load request

Uncaught (in promise) DOMException: The play() request was interrupted by a new load request


我快速切换音频的时候,报以上错误
阅读 18.8k
3 个回答

这个play(播放)操作是一个promise,它要等媒体加载到一定程度后才会播放(resolve)。所以你快速切换这个promise就抛错了

按我的经验如果直接调用以下代码会报你说的错误:

var audio = new Audio(); 
audio.src = "audio.mp3"; 
audio.play(); 
audio.load(); 

可以这样写来解决:

HTMLAudioElement.prototype._play = HTMLAudioElement.prototype.play; 
HTMLAudioElement.prototype._load = HTMLAudioElement.prototype.load; 
HTMLAudioElement.prototype.play = function() {
    // 禁止load操作
    this._lockLoad = true; 
    this._play(); 
}
HTMLAudioElement.prototype.load = function() {
    this._lockLoad || this._load(); 
}

var audio = new Audio(); 
audio.src = "audio.mp3"; 
audio.play(); 
audio.load(); 

你 监听 onplaying 这个事件试试,设置个标志位,当这个事件触发时 标志位 设为 true 然后执行下一首的逻辑

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题