播放AUDIO时未捕获Google Chrome(承诺)DOMException

Shr*_*nam 6 html javascript

Google Chrome默认会阻止播放音频/视频。我已经查找了问题,但是我只能找到视频的解决方案,并且希望音频循环播放。这是我的代码:

var audio = new Audio('audio/audio.mp3'); audio.play(); audio.loop = true;
Run Code Online (Sandbox Code Playgroud)

由于新政策或其他原因,这只会在Google Chrome上导致“未捕获(承诺)的DOMException”。有人可以帮忙吗?

Nor*_*eau 10

您正在接收未捕获的异常,因为您没有处理错误。

https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLMediaElement/play

音频是一个HTMLMediaElement对象,该play()方法返回一个Promise。因此,我建议处理该错误。

var promise = audio.play();
if (promise) {
    //Older browsers may not return a promise, according to the MDN website
    promise.catch(function(error) { console.error(error); });
}
Run Code Online (Sandbox Code Playgroud)

可能是以下两个错误之一:

NotSupportedError

这意味着浏览器不支持音频源(可能是由于音频格式)

NotAllowedError

我怀疑这是您触发的那个。这意味着用户需要显式触发audio.play(),因此该方法仅在响应用户生成的事件(例如click事件)时才可用。

文件:

用户代理(浏览器)或操作系统不允许在当前上下文或情况下播放媒体。例如,如果浏览器要求用户通过单击“播放”按钮显式启动媒体播放,则可能会发生这种情况。