2012-06-16 155 views
1

我有一段60秒長的視頻。我正在努力添加一些JavaScript以將數據從我的視頻播放器發送到Google Analytics。我期待的是在一段時間內不超過每60秒發起一次活動。因此,例如,用戶在視頻中觀看21到40秒,我只想要發起一個事件(而不是19秒19次)。然後用戶觀看視頻41到60秒,我只想要發起一個事件。我其實已經想出了這部分。每60秒啓動一次活動(JavaScript)

問題在於何時需要處理。所以如果用戶觀看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

您可以將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(); 

上面的代碼做你問什麼,但我不知道有多好,這將處理暫停和繼續後一分鐘以上的視頻。在這種情況下,它可能也會發生兩次事件。

+0

這工作完美!!!!非常感謝你的指導!沒有重複的火災。正是我想要的! –

+0

@JagaJones沒問題!我很高興它效果不錯:) – Paulpro

0

使用setTimeout函數的JavaScript。

+0

當然遞歸。 –

-1

像這樣的東西可能是有用的:

function yourFunction() { 
     // Do whatever you need 
     setTimeout('yourFunction()', 60000); 
}