Я не могу остановить воспроизведение аудио на обслуживаемых веб-страницах через AJAX-звонки. - PullRequest
0 голосов
/ 13 февраля 2019

Я создал страницу викторины для паба, которая работает так, как я хотел.Для аудио раунда я хочу воспроизвести звук, который услышат все игроки.Это работает.Но когда я нажимаю «Стоп», он останавливается в моем экземпляре браузера, а не на страницах проигрывателей.

Я использую текстовые файлы, сгенерированные PHP на странице мастеров викторины.Использование ajax для чтения этих файлов каждую секунду и изменения вывода при его изменении на странице проигрывателей.Весь мой код работает, даже может вызывать новые звуковые события.Но как только в браузере плееров проигрывается аудио событие, я просто не могу его остановить.Мой php создает текстовые файлы - пустая запись при нажатии кнопки «Стоп».Когда я изменяю текстовый файл, воспроизводится новый аудиоклип.Я попытался добавить aud.stop ();в начале разговора, но не позволяет воспроизводить звук.

<script>
function updateq(){
    $.ajax({url: '<?php echo $baseurl."curquestion.txt"; ?>',  ifModified: true, success: function(result, status){
    if (status === 'success') { $('#cq').html(result); }
    }});
    $.ajax({url: '<?php echo $baseurl."playaudio.txt"; ?>',  ifModified: true, success: function(result, status){
    if (status === 'success') { var aud = new Audio(result);    aud.play();
    }
   }});
    setTimeout('updateq()',1000);
};
</script>
<script type="text/javascript">  
$(document).ready(
function() 
    {
     updateq();
    });
</script>

Когда мой playaudio.txt изменится с допустимого имени файла mp3 на «», я надеялся, что звук остановится.Но после запуска в веб-браузере проигрывателя, после воспроизведения аудиофайла, он воспроизводится до завершения или до обновления страницы.Аудио события, кажется, перекрываются, пока веб-страница загружена.

1 Ответ

0 голосов
/ 13 февраля 2019

Я думаю, что проблема в сфере.Var, который воспроизводит ваше аудио, не существует после загрузки следующего, поэтому вы не можете его остановить.Может быть, попробовать что-то вроде этого.

<script>
var lastAud = null;
function updateq(){
    $.ajax({url: '<?php echo $baseurl."curquestion.txt"; ?>',  ifModified: true, success: function(result, status){
    if (status === 'success') { $('#cq').html(result); }
    }});
    $.ajax({url: '<?php echo $baseurl."playaudio.txt"; ?>',  ifModified: true, success: function(result, status){
    if (status === 'success') {
      if(lastAud && lastAud.src != result) {
           location.reload();
      }

      aud = new Audio(result);
      aud.play();
      lastAud = aud;
    }
   }});
    setTimeout('updateq()',1000);
};
</script>
<script type="text/javascript">  
$(document).ready(
function() 
    {
     updateq();
    });
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...