ここでは、ユーザー全体のビデオの総再生回数を数えることについて、たくさんのおしゃべりを見てきました。それは私が必要とするものではありません。
ユーザーがビデオを見て、2 つの写真から選択する Web ベースの実験を開発しています。ビデオをクリックして再生するオプションがあり、選択する前に特定のビデオを再生した回数を追跡したいだけです。このスクリプトは、ビデオが終了するまで再生できないように設計されており、終了した時点でマウスをクリックすると最初から再生されます。
試行 1: イベント リスナーを使用して、onplay が発生したときにカウンターをインクリメントします。
問題 1: addeventlistener 関数内にインクリメント関数があると、ループのような動作が発生していました。毎回 1 回インクリメントする代わりに、カウンタは現在の値に等しい回数だけインクリメントします。良くないですよ。
試行 2: addlistener ステートメントからインクリメント ステートメント/関数を取り出します。問題 2: これは適切なインクリメントを生成しますが、PLAYS の数ではなく、CLICKS の数をカウントするだけです。たとえば、ユーザーがダブルクリックすると、カウンターはそれを「2」として登録しますが、ビデオは応答として 1 回だけ再生されます。
Attempt 1 の方がマークに近かったと確信しているので、そのための私のコードを次に示します。おそらく誰かが、なぜこのような愚かな結果が得られるのか教えてくれるでしょうか? しゃれが意図されています。このコードは両方の問題を示しています。ループしているかのようにインクリメントし、再生ではなくクリックをカウントします。1 つ目はもっと不思議ですが、2 つ目の問題を解決するのに苦労しました。どなたか両方解ける方がいらっしゃいましたらよろしくお願いします!
私の問題の一部は、「onclick」を介して PlayVideo() 関数を呼び出しているという事実に起因する可能性があります。問題が少なくなるように設定する他の方法を受け入れます。
PS また、多くのユーザーは動画が終了する前に選択を行う可能性が高いため、動画が終了する回数も数えたくありません。増分は早い段階で行う必要があります。
function PlayVideo(){
var myVideo = document.getElementsByTagName('video')[0];
myVideo.play();
myVideo.addEventListener('playing', function(){
viewcounter++}, false);
console.log(viewcounter);
//myVideo.addEventListener('onplay', viewcounter++);
}