1

我有一个 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>
4

3 回答 3

0

使用javascript 的setTimeout函数。

于 2012-06-16T16:54:21.183 回答
0

您可以添加this.last到您的 Follow 对象并记录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();

上面的代码可以满足您的要求,但我不确定这将如何在一分钟后暂停和继续播放视频。在这种情况下,它可能还会触发该事件两次。

于 2012-06-16T17:02:00.527 回答
-1

像这样的东西可能很有用:

function yourFunction() {
        // Do whatever you need
        setTimeout('yourFunction()', 60000);
}
于 2012-06-16T17:03:24.750 回答