У меня довольно простой бит 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);
}