AbortError:play()请求被对pause()的调用中断了

时间:2018-12-12 02:06:00

标签: javascript html audio promise playback

iam currenlty试图修复此javascript代码,但我似乎无法正确解决它仍然抛出

  

未捕获(承诺)AbortError:play()请求被中断   通过调用pause()

我不明白这是怎么回事,所以如果你们能帮助我,我会很开心的

这是代码

<html>
<head>
    <script src="nui://game/ui/jquery.js" type="text/javascript"></script>
    <script>
        var audioPlayer = null;

        window.addEventListener('message', function(event) {
            if (event.data.transactionType == "playSound") {

              if (audioPlayer != null) {
              audioPlayer.pause();
              }

              audioPlayer = new Audio("./sounds/" + event.data.transactionFile + ".ogg");
              audioPlayer.volume = event.data.transactionVolume;

              audioPlayer.play();


            }
        });
    </script>
</head>

2 个答案:

答案 0 :(得分:0)

我在播放声音时遇到了这个问题。以下代码为我修复了该问题:

var soundPromise = audioPlayer.play();

//If the promise exists
if (soundPromise != undefined) {

    soundPromise.then(function(_) {
        //Pause and reset the sound
        sound.pause();
        sound.currentTime = 0;

    });

}

让我知道您是否有任何问题!

答案 1 :(得分:0)

这是浏览器中的自动播放问题:简而言之,如果您不进行某些操作(例如单击,触摸),浏览器将不允许媒体自动开始播放。

可以参考:https://developers.google.com/web/updates/2017/09/autoplay-policy-changes

要解决此问题,您应将.play()的调用置于单击按钮的回调函数中,例如

playBtn.onclick = function(){
  audioPlayer.play();
}

这不是问题,实际上是一条规则。