HTML5 video.currentTime возвращает NaN только для некоторых пользователей - PullRequest
1 голос
/ 21 апреля 2020

У меня довольно простой бит JS, который использует AJAX для отслеживания прогресса пользователя в видео. Это прекрасно работает для десятков и десятков пользователей, но есть некоторые, которые иногда вообще не отслеживают.

После долгих расследований я обнаружил, что это потому, что по какой-то причине cur_time = Math.round(cvid.currrentTime); возвращает NaN. Когда это происходит, это происходит для каждого интервала функции. Я не смог воссоздать ошибку самостоятельно в любом браузере или на любом устройстве, которое у меня есть, поэтому я не могу проверить консоль.

Кто-нибудь знает какие-либо причины, по которым cvid.currentTime не вернет действительное число даже хотя видео явно правильно загружено для вызова cvid.oncanplay?

var interv;

var cvid = document.getElementById("cvideo");
cvid.oncanplay = function() {
  interval_track();
};

function ajaxtrack(ended) {
  var cur_time = Math.round(cvid.currrentTime);
  $.ajax({
    url: "/ce/inc/ajax.php?action=vid_track",
    type: "POST",
    async: false,
    data: {
      course_id: '<?=$course_id?>',
      user_id: '<?=$user_id?>',
      cur_time: cur_time,
      ended: ended,
    },
  });
}

function interval_track() {
  clearInterval(interv);
  interv = setInterval(function() {
    if (!cvid.paused) {
      ajaxtrack();
    }
  }, 15000);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...