Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:计算单个用户数';在页面上播放的视频是什么?_Javascript_Video_Counter_Increment - Fatal编程技术网

Javascript:计算单个用户数';在页面上播放的视频是什么?

Javascript:计算单个用户数';在页面上播放的视频是什么?,javascript,video,counter,increment,Javascript,Video,Counter,Increment,我在这里看到很多关于计算用户视频总浏览量的闲聊。那不是我需要的 我正在开发一个基于网络的实验,用户将看到一个视频,然后在两张图片中进行选择。他们可以选择点击视频进行回放,我只想在做出选择之前跟踪他们回放给定视频的次数。脚本的设计使视频在结束前无法重放,此时鼠标单击将从头开始重放 尝试1:在onplay激发时使用事件侦听器增加计数器。 问题1:在addeventlistener函数中使用增量函数会导致类似循环的行为。计数器不是每次递增一次,而是递增等于其当前值的次数。不行 尝试2:从addlist

我在这里看到很多关于计算用户视频总浏览量的闲聊。那不是我需要的

我正在开发一个基于网络的实验,用户将看到一个视频,然后在两张图片中进行选择。他们可以选择点击视频进行回放,我只想在做出选择之前跟踪他们回放给定视频的次数。脚本的设计使视频在结束前无法重放,此时鼠标单击将从头开始重放

尝试1:在onplay激发时使用事件侦听器增加计数器。
问题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);
}