1

60秒の動画があります。動画プレーヤーから Google アナリティクスにデータを送信するための JavaScript の追加に取り組んでいます。私がやろうとしているのは、一定の時間、60 秒に 1 回だけイベントを起動することです。

たとえば、ユーザーが動画を 21 秒から 40 秒視聴した場合、イベントを 1 回だけ開始する必要があります (19 秒間で 19 回ではなく)。次に、ユーザーはビデオの 41 ~ 60 秒を視聴します。イベントを 1 つだけ開始します。私は実際にこの部分をすでに理解しています。

問題はいつになるかです。したがって、ユーザーが 21 秒から 40 秒を見ると、イベントが開始されます。彼らはビデオの残りを見て、それを精神的に処理し、「ビデオをもう一度見たい」と判断します。ビデオをもう一度見ると、ページを更新しない限り、21 ~ 40 秒の 1 つのイベントが再び開始されることはありません。

特定の範囲で 60 秒ごとに 1 回だけイベントが起動されるようにスクリプトを編集するにはどうすればよいですか?

<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.lastFollow オブジェクトに追加して、Follow最後に起動された時間を記録できます。

function Follow( minimum, maximum ){
    this.min = minimum;
    this.max = maximum;
    this.done = false;
    this.last = 0;
}

次に、関数で、最後に起動してから 1 分以上経過しているかどうかを確認できます。

var Follow = following[t];
if((new Date).getTime() > Follow.last + 60000)
    Follow.done = false;

最後にFollow.donetrue に設定すると、最後に起動した時刻も現在の時刻に設定されます。

Follow.done = true; 
Follow.last = (new Date).getTime();

上記のコードはあなたが要求したことを実行しますが、これが 1 分以上後にビデオを一時停止して続行することにどの程度うまく対処できるかはわかりません. その状況では、おそらくイベントを 2 回発生させます。

于 2012-06-16T17:02:00.527 に答える
-1

このようなものは便利です:

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