Событие JWPlayer onComplete запускается несколько раз в цикле jQuery - PullRequest
0 голосов
/ 14 сентября 2018

Функциональность

Я могу добавить несколько видео на страницу, и все видео воспроизводятся с помощью проигрывателя JWplayer.

Я хочу отслеживатькакое видео воспроизводится в данный момент и когда оно завершает воспроизведение на странице (за один раз воспроизводится видео).Поэтому я вызываю метод javascript каждую секунду и проверяю, какое видео воспроизводится, и проверяю, завершает ли оно воспроизведение.

My Issue

Но проблема в том, что если воспроизводится 5-секундное видео и оно завершает воспроизведение, jwplayer (). On ('complete ') триггер события 5 раз,

Ниже приведен метод javascript

function saveVideoPosition()
  {
    var lt;
    var ct;
    var currID = ''; 
    var lvp = 0;
    var playerId = '';

    $(".jwplayer").each(function(idx, item) {

        var id = $(item).attr("id");

        if (jwplayer(id).getState() == "playing") {

          if(isIdGenerated == false){
             ltt = new Date();
             token = ltt.getTime();
             isIdGenerated = true;
          }

          // the theory is only one video can play at a time
          playerId = id;
          currID = jwplayer(id).getPlaylistItem().mediaid;
          lvp = jwplayer(id).getPosition().toFixed();              

          jwplayer(playerId).on('complete', function(e)
          {
            callRequest = true;
            start = 0;
            currentP = '';
          });

          // get new video start position after seeking
          jwplayer(playerId).on('seeked', function(e)
          {
            currentP = this.getPosition().toFixed();
            callRequest = true;
          });  
        } 

    });

    console.log(hasValue(currID)+' - ' + callRequest +' - '+start +' - '+end);
    if (hasValue(currID) && lvp > 0 && callRequest == true) {
      params = base_params + "&vid=" + currID+ "&s=" + start + "&e=" + end+ "&token=" + token;
      url = "save.php?" + params;
      request = new XMLHttpRequest();
      request.open("GET", url, true);
      request.send(null);
    }
    if(currentP != ''){
      start = currentP;
    }
    end = lvp; 
    callRequest = false;
    isIdGenerated = false;

}

В связи с этим вызов запроса issus ajax 5 раз.

...