我有一段60秒的视频。我正在努力添加一些JavaScript,以便将数据从我的视频播放器发送到Google Analytics。我要做的是在一段时间内每60秒发起一次活动。
因此,例如,用户在视频中观看21到40秒,我想只启动一个事件(而不是19秒时间内19次)。然后用户观看41到60秒的视频,我想只发一个事件。我实际上已经把这部分想出来了。
问题出在时间上。因此,如果用户观看21到40秒,就会启动一个事件。他们观看视频的其余部分并进行精神处理并决定“嘿,我想再次观看视频”。如果他们再次观看视频,那么除非他们刷新页面,否则21到40秒的那个事件将不会再次启动。
如何编辑我的脚本,以便特定范围每60秒仅启动一次事件?
<script type="text/javascript">
function Follow( minimum, maximum )
{
this.min = minimum;
this.max = maximum;
this.done = false;
}
var following = [
new Follow( 1, 20 ),
new Follow( 21, 40 ),
new Follow( 41, 60 )
];
player().Time(
function(event)
{
var gone = Number(event.secondspassed);
for ( var t = 0; t < following.length; ++t )
{
var Follow = following[t];
if ( gone >= Follow.min && gone < Follow.max )
{
if ( ! Follow.done )
{
var range = Follow.min + " Seconds Watched ";
_gaq.push(['_trackEvent', range, 'Play', 'Title']);
Follow.done = true;
}
break;
}
}
}
);
</script>
答案 0 :(得分:0)
使用javascript的setTimeout功能。
答案 1 :(得分:0)
您可以将this.last
添加到关注对象,并记录上次Follow
被解雇的时间。
function Follow( minimum, maximum ){
this.min = minimum;
this.max = maximum;
this.done = false;
this.last = 0;
}
然后在你的功能中,你可以检查它自上次解雇以来是否已超过一分钟:
var Follow = following[t];
if((new Date).getTime() > Follow.last + 60000)
Follow.done = false;
最后,当您将Follow.done
设置为true时,还要将其上次触发时间设置为当前时间:
Follow.done = true;
Follow.last = (new Date).getTime();
上面的代码可以满足您的要求,但我不确定这将在一分钟之后处理暂停和继续视频的效果。在那种情况下,它可能也会两次触发事件。
答案 2 :(得分:-1)
这样的事情很有用:
function yourFunction() {
// Do whatever you need
setTimeout('yourFunction()', 60000);
}