AbortError: запрос play () был прерван вызовом pause () - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь исправить этот код JavaScript, но я не могу понять, что все правильно, он все равно выбрасывает

Uncaught (в обещании) 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 голосов
/ 12 декабря 2018

Это проблема автоматического воспроизведения в браузере: короче говоря, если вы не сделаете какую-либо операцию (например, нажмите, коснитесь), браузер не разрешит автоматическому запуску воспроизведения мультимедиа.

Может относиться к: https://developers.google.com/web/updates/2017/09/autoplay-policy-changes

Чтобы исправить, вы должны поместить вызов .play() в функцию обратного вызова, нажав кнопку, например

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

Это скорее не проблема, этоэто на самом деле правило.

0 голосов
/ 12 декабря 2018

У меня была эта проблема сама при игре со звуками.Код ниже исправил это для меня:

var soundPromise = audioPlayer.play();

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

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

    });

}

Дайте мне знать, если у вас есть какие-либо проблемы!

...