2017-01-13 5 views
0

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

Я смотрю на Media Events docs и считаю, что событие playing - это тот, который я за ним. Это верно? Я также опасаюсь, что это может привести к сбою запросов AJAX каждый раз, когда нажата кнопка воспроизведения, а не только в первый раз (если они приостанавливаются и, например, приостанавливаются), и это может привести к искажениям журналов.

Это пример слушателя документы дают для событий СМИ:

var v = document.getElementsByTagName("video")[0]; 
v.addEventListener("seeked", function() { v.play(); }, true); 
v.currentTime = 10.0; 

Но как я мог интегрировать это на следующий код:

<audio id="123" controls> 
    <source src="../uploads/filename.mp3" type="audio/mpeg"> 
</audio> 

Я попытался следующий, но ничего как представляется, происходит:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $('audio').each(function() { 
      var id = $(this).attr('id'); 
      $(this).addEventListener("playing", function() { 
       alert(id); 
      }); 
     }); 
    }); 
</script> 
+0

не думаю, что вы хотите событие игры - это только срабатывает, когда файл будет готов снова после того, как проблема буферизации.Из вашей ссылки на документ: _ «Игровое событие запускается, когда воспроизведение готово к запуску после паузы или задержки из-за отсутствия данных». _. Событие «играть» - это то, что вы хотите. «Событие воспроизведения запускается, когда воспроизведение началось». https://developer.mozilla.org/en-US/docs/Web/Events/play. – ADyson

ответ

2

О событиях:

игра событие происходит, когда был запущен аудио/видео или больше не> замолчала.

воспроизведение событие происходит, когда аудио/видео воспроизводится после того, как было приостановлено или остановлено для буферизации.

Вы можете прочитать на this answer

И для стрельбы событие только тогда один раз НУ можете использовать .one() функцию JQuery:

.one(events [, data ], handler)

Описание :

Прикрепите обработчик к событию для элементов. Обработчик выполняется не более одного раза для каждого элемента в каждом типе события.

Как:

$(this).one("playing", function() { 
    alert(id); 
}); 
1

Событие «играть» уволено когда-либо меня воспроизведение начинается, возобновляется или перезапускается.

Самый простой способ убедиться, что событие обрабатывается только один раз, - это удалить прослушиватель событий в функции обработчика события.

function oneTimeEventHandler(e) { 
    // remove this handler 
    e.target.removeEventListener(e.type, arguments.callee); 
    // now handle the event 
    alert("This event will only be handled once!"); 
} 

Пример на CodePen: http://codepen.io/anon/pen/mRErLR

Смежные вопросы