首页 > 解决方案 > 如何捕获自动播放 DOMException?

问题描述

当我尝试在用户与页面交互之前运行 Audio.play() 时,它会引发错误:

Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first

我怎样才能捕捉到异常,所以我不会乱扔控制台日志?我想尝试以编程方式加载音频并清除错误,但默认的 JavaScript try/catch 没有成功应用。

标签: javascriptexceptionaudiopromise

解决方案


这篇文章

一般来说,Web 作者在调用 HTMLMediaElement.play() 时的建议是不要假设对 play() 的调用总是会成功,并且总是处理 play() 返回的承诺被拒绝。

因为 play() 返回一个承诺,我们可以链接一个.catch()调用来处理错误:

Audio.play().catch(error => {
  // Autoplay was blocked. Do something
})

推荐阅读