【发布时间】:2021-05-07 20:53:28
【问题描述】:
我正在尝试使用音频对象方法:audio.play() 和 audio.pause(),使元素播放/暂停声音,但我收到此错误:
“未捕获(承诺中)DOMException:play() 请求被对 pause() 的调用中断。”
有没有一种简单的方法可以在没有任何库的情况下解决这个问题?
document.querySelector(".head-container").addEventListener("click", function () {
var audio = new Audio('./sounds/kick-bass.mp3');
audio.play();
if (!audio.paused) {
audio.pause();
}
});
更新,解决方案是从事件侦听器中创建音频对象,我的错。如果您希望重新启动声音,也可以使用 audio.load() 而不是 audio.paused() 感兴趣的任何人。
var audio = new Audio('./sounds/sound.mp3');
document.querySelector(".head-container").addEventListener("click", function () {
if (audio.paused) {
audio.play();
}
else {
audio.pause()
/*audio.load(); */
}
【问题讨论】:
-
play和pause方法是异步的。也就是说,调用play之后的代码将在音频开始播放之前运行。考虑等待play方法,或者最初甚至不播放音频。 -
您的情况正确吗?它似乎关闭了
-
您能更好地描述预期的行为吗?
-
如果每次点击都创建一个新的音频对象,你应该如何暂停?
标签: javascript