2015-07-04 75 views
0

根據時間設置,我有將事件發送到Analytics的此(部分)腳本。默認情況下,它每隔10秒發送一次事件,輸出爲ga(「發送」,「事件」,「時間」,「日誌」,「0:10」),10秒鐘後它是ga(「send」,「event 「,」時間「,」日誌「,」0:20「)。更改javascript的輸出

我無法弄清楚的是當我改變時間設置每隔20秒觸發一次事件如何獲得這個輸出ga(「send」,「event」,「Time」,「Log」,「0 :20「),並且下一個20秒後ga(」發送「,」事件「,」時間「,」日誌「,」0:40「)。

這是我的代碼有

var stLogInterval = 20; 

function TrackingLogTime(tosArray) { 
    return tosArray[0] == 50 ? (parseInt(tosArray[1]) + 1) + ":00" : (tosArray[1] || "0") + ":" + (parseInt(tosArray[0]) + 10) 
} 

function stInitializeControlVars() { 
    if (typeof window.stLogInterval == "undefined") { 
     window.stLogInterval = 10000 
    } 
} 

function startTimeTracking(tos) { 
    stInitializeControlVars(); 
    window.stIntervalObj = window.setInterval(function() { 
     total_time += 10; 
     tos = TrackingLogTime(tos.split(":").reverse()); 
     ga("send", "event", "Time", "Log", tos) 
    }, (window.stLogInterval)) 
} 

jQuery(document).ready(function() { 
    startTimeTracking("00") 
}) 

有沒有辦法給stLogInterval添加到TrackingLogTime?我試圖用+ stLogInterval替換+10,但沒有完成這項工作。

+0

你想用分鐘,小時顯示時間嗎?即「0:20」,「0:40」,「1:00」等? – user907860

+0

它現在的方式是秒。所以0:20是20秒,儘管我同意它看起來像分鐘。輸出應該只是0:20和0:40等。謝謝 – WendiT

+0

我明白,最後一部分是秒,可以接受0:100而不是1:40嗎? – user907860

回答

0

需要

return tosArray[0] == 50 ? (parseInt(tosArray[1]) + 1) + ":00" : (tosArray[1] || "0") + ":" + (parseInt(tosArray[0]) + 10) 

這一個

return tosArray[0] == 40 ? (parseInt(tosArray[1]) + 1) + ":00" : (tosArray[1] || "0") + ":" + (parseInt(tosArray[0]) + 20) 

window.stLogInterval = 10000改變這一行window.stLogInterval = 20000

=============== ================================================== ====== 其他注意事項是:

另外我想警告你,這是不安全的依賴javascript定時器,因爲js是單線程的,並且你希望在超時或間隔後準確調用的代碼可以在稍後調用。雖然間隔20秒我不認爲這會是問題。

順便說一句,在你的代碼中有一些混亂。此行似乎是無用

total_time += 10; 

而且這個var stLogInterval = 20;

if (typeof window.stLogInterval == "undefined") { 
    window.stLogInterval = 10000 
} 

是無稽之談。需要獨佔,而不是兩個,最好是可變

========================

更新使用變量或窗口屬性根據意見

你需要的功能TrackingLogTime改變

function TrackingLogTime(tosArray) { 
    var minPart; 
    var sec = +tosArray[0] + 20; 
    if (sec >= 60) { 
     minPart = +tosArray[1] + 1; 
     sec -= 60; 
    } else { 
     minPart = tosArray[1] || '0'; 
    } 
    sec = sec < 10 ? '0' + sec : sec; 
    return minPart + ':' + sec; 
} 

window.stLogInterval = 20000必須設置的,而不是10000。我真的不喜歡這個功能,實在是有點不符合邏輯,但這些是需要的小改動。

+0

謝謝。代碼中的混亂可能對代碼的其他部分有用。我只拿出了我需要這個問題的部分。 人們實際上可以自己設置時間變量。如果他們將變量設置爲30秒,怎麼樣?我知道上面的工作是在我手動更改的時候工作的,但是如果有人在插件選項頁面上更改時間變量,那麼輸出也應該是相應的。 – WendiT

+0

@WendiT那麼你可能需要將'total_time + = 10'相應地改爲+ = 20 – user907860

+0

當我說50和10以及40和20是秒鐘時,我是否理解正確? 10和20是採取的步驟? – WendiT