Javascript:计算单个用户数';在页面上播放的视频是什么?
我在这里看到很多关于计算用户视频总浏览量的闲聊。那不是我需要的 我正在开发一个基于网络的实验,用户将看到一个视频,然后在两张图片中进行选择。他们可以选择点击视频进行回放,我只想在做出选择之前跟踪他们回放给定视频的次数。脚本的设计使视频在结束前无法重放,此时鼠标单击将从头开始重放 尝试1:在onplay激发时使用事件侦听器增加计数器。Javascript:计算单个用户数';在页面上播放的视频是什么?,javascript,video,counter,increment,Javascript,Video,Counter,Increment,我在这里看到很多关于计算用户视频总浏览量的闲聊。那不是我需要的 我正在开发一个基于网络的实验,用户将看到一个视频,然后在两张图片中进行选择。他们可以选择点击视频进行回放,我只想在做出选择之前跟踪他们回放给定视频的次数。脚本的设计使视频在结束前无法重放,此时鼠标单击将从头开始重放 尝试1:在onplay激发时使用事件侦听器增加计数器。 问题1:在addeventlistener函数中使用增量函数会导致类似循环的行为。计数器不是每次递增一次,而是递增等于其当前值的次数。不行 尝试2:从addlist
问题1:在addeventlistener函数中使用增量函数会导致类似循环的行为。计数器不是每次递增一次,而是递增等于其当前值的次数。不行 尝试2:从addlistener语句中取出增量语句/函数。 问题2:这会产生很好的增量,但它只计算点击次数,而不是播放次数。例如,如果用户双击,计数器会将其注册为“2”,而视频将只播放一次作为响应 我确信尝试1更接近目标,所以这是我的代码,也许有人能告诉我为什么我会得到这样的结果?双关语。这段代码显示了这两个问题:它像在循环中一样递增,并且它计算点击次数而不是播放次数。第一个问题对我来说更神秘,但我解决第二个问题更困难。如果你们中有人能同时解决这两个问题,我将不胜感激 我的部分问题可能是因为我通过“onclick”调用PlayVideo()函数。我愿意用其他方法来解决这个问题 另外,我也不想计算视频结束的次数,因为很多用户可能会在视频结束前做出选择。增量需要尽早发生
function PlayVideo(){
var myVideo = document.getElementsByTagName('video')[0];
myVideo.play();
myVideo.addEventListener('playing', function(){
viewcounter++}, false);
console.log(viewcounter);
//myVideo.addEventListener('onplay', viewcounter++);
}
可能将
播放
更改为播放
function onPlay(){
var myVideo = document.getElementsByTagName('video')[0];
myVideo.play();
myVideo.addEventListener('play', function(){
viewcounter++}, false);
console.log(viewcounter);
}
无论何时播放视频,都应调用此选项。参考资料:这与其说是一个解决办法,还不如说是一个真正的答案,但万一有人有类似的问题:
我基本上需要一种方法来抑制增量函数,直到视频播放结束后第一次单击为止。为此,我创建了一个附加变量(名为“fired”),并将其初始化为false。仅当“fired”=false时,才会调用增量函数。在它触发一次后,我设置fired=true。然后我使用事件侦听器在视频结束后将其设置回false。虽然很难看,但它很管用
如果有人有更好的主意,我洗耳恭听
var fired = false;
function PlayVideo(){
var myVideo = document.getElementsByTagName('video')[0];
myVideo.play();
StartTimer();
if (!fired) {
viewcounter++; //in other words, increment the first time it's clicked, but then not again until after the variable has been reset to false, which happens at the end of the video.
}
fired = true;
console.log(viewcounter);
myVideo.addEventListener('ended', function(){fired=false;}, false);
您还可以计算查看器通过某个时间点的次数(或添加多个时间点计数器):
谢谢,但不幸的是,我试过了,我得到了完全相同的行为-\
var triggerTime=1, fired=0;
function PlayVideo(){
myVideo.addEventListener("timeupdate", function () {
var timer = myVideo.currentTime.toFixed(2) ;
if (timer > triggerTime) {
if (!fired) {
viewcounter++;
fired=true;
}
}
myVideo.addEventListener('ended', function(){fired=false;}, false);
}