【问题标题】:is there a way to pause an audio after being played? [duplicate]有没有办法在播放后暂停音频? [复制]
【发布时间】: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(); */
    }

【问题讨论】:

  • playpause 方法是异步的。也就是说,调用play 之后的代码将在音频开始播放之前运行。考虑等待play 方法,或者最初甚至不播放音频。
  • 您的情况正确吗?它似乎关闭了
  • 您能更好地描述预期的行为吗?
  • 如果每次点击都创建一个新的音频对象,你应该如何暂停?

标签: javascript


【解决方案1】:

我认为你的条件语句有问题。 为什么不尝试使用

...
var audio = new Audio('./sounds/kick-bass.mp3');
if(!audio.paused) {
    audio.pause();
} else {
    audio.play();
}

【讨论】:

  • 抱歉没用,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-11
相关资源
最近更新 更多