Я видел здесь много болтовни о подсчете общего количества просмотров видео среди пользователей. Это не то, что мне нужно.
Я разрабатываю веб-эксперимент, в котором пользователи будут смотреть видео, а затем выбирать между двумя изображениями. У них есть возможность щелкнуть видео, чтобы воспроизвести его, и я просто хочу отслеживать, сколько раз они воспроизводят данное видео, прежде чем сделать свой выбор. Сценарий разработан таким образом, что видео нельзя воспроизвести до тех пор, пока оно не закончится, и в этот момент щелчок мыши воспроизведет его с самого начала.
Попытка 1: использование прослушивателя событий для увеличения счетчика при срабатывании onplay.
Проблема 1: наличие функции увеличения внутри функции addeventlistener приводило к циклическому поведению. Вместо того, чтобы увеличиваться один раз каждый раз, счетчик будет увеличивать количество раз, равное его текущему значению. Не нормально.
Попытка 2: убрать оператор/функцию приращения из оператора addlistener. Проблема 2: Это дает хороший прирост, но он просто подсчитывает количество КЛИКОВ, а не количество ВОСПРОИЗВЕДЕНИЙ. Например, если пользователь делает двойной щелчок, счетчик зарегистрирует это как «2», тогда как видео будет воспроизведено только один раз в ответ.
Я уверен, что Попытка 1 была ближе к цели, поэтому вот мой код для этого, и, возможно, кто-нибудь может сказать мне, почему я получаю такие зацикленные результаты? Игра слов. Этот код отображает обе проблемы: он увеличивается, как если бы он находился в цикле, и он подсчитывает клики вместо воспроизведений. Первое для меня более загадочно, но мне было труднее решить второе. Я был бы очень обязан, если бы кто-нибудь из вас смог решить оба!
Вероятно, часть моей проблемы связана с тем, что я вызываю функцию PlayVideo() через «onclick». Я открыт для других способов настроить это, чтобы было меньше проблем.
P.S. Я также не хочу считать, сколько раз видео заканчивается, так как многие пользователи, скорее всего, сделают свой выбор до окончания видео. Увеличение должно произойти на ранней стадии.
function PlayVideo(){
var myVideo = document.getElementsByTagName('video')[0];
myVideo.play();
myVideo.addEventListener('playing', function(){
viewcounter++}, false);
console.log(viewcounter);
//myVideo.addEventListener('onplay', viewcounter++);
}