воспроизводить звук при успешном выполнении функции и не перекрывать звуки (несколько функций) - PullRequest
0 голосов
/ 12 октября 2019

Я хочу воспроизвести звуковой сигнал при успешном выполнении функции, у меня запущено несколько похожих сценариев

все, что я пробовал, либо зацикливается, либо воспроизводится при загрузке страницы, либо перекрывается, поскольку я использую один и тот же звук для всехмои сценарии, мне нужно как-то остановить воспроизведение и воспроизвести следующий с самого начала ... я действительно мог бы использовать некоторую помощь по этому

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script 
 src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"> 
 type="text/javascript" charset="utf-8"></script>
 <script>
   var audio = new Audio("audiosrc.mp3");
  $(document).ready(function(){
  sendRequest();
  function sendRequest(){
  $.ajax({
    url: "vineri.php",
    success: 
      function(data){

       $('#listposts').html(data); 

    },
    function playAudio() {

    audio.pause();
    audio.currentTime = 0;

    audio.play();
    },
    complete: function() {

   setTimeout(sendRequest, 5000); 
   }
   });
  };
   });

</script>
</head>
<body>
<div id="listposts"> </div>
</body>

, как я сказал, у меня есть дюжина подобных сценариев и divна странице Как мне воспроизвести audio.mp3 для всех моих сценариев по завершению: функция без наложения или воспроизведения при загрузке страницы. я не могу использовать кнопки, звук должен воспроизводиться во время работы ajax и останавливаться, когда скрипт останавливается

1 Ответ

0 голосов
/ 12 октября 2019

Это могут быть 2 вещи:

  1. Возможно, вы не ожидали загрузки звука.
  2. Вы не сделали паузу и не сбросили звук.

Вот как это исправить:

//at the start of your script
var audio = new Audio("audiosrc.mp3");
var loadStatus = 0;
$( window ).on( "load", function() {
setTimeout(function(){loadStatus=1}, 2000);
})
function playAudio() {
   if (loadStatus === 1) {//check page wasn’t just loaded
   //make sure audio is reset
   audio.pause();
   audio.currentTime = 0;
   //play
   audio.play();
   }
}

Кроме того, safari не позволяет запускать звук, если он не был инициализирован пользовательским событием. См этот вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...