簡體   English   中英

更改javascript的輸出

[英]Changing the output of a javascript

我有這個(一部分)腳本,可以根據時間設置將事件發送到Google Analytics(分析)。 默認情況下,它每10秒發送一次事件,輸出為ga(“ send”,“ event”,“ Time”,“ Log”,“ 0:10”)),並在10秒后輸出為ga(“ send”,“ event “,“時間”,“日志”,“ 0:20”)。

我不知道的是,當我更改時間設置以每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,但這沒有完成。

您需要更改此行

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 = 10000window.stLogInterval = 20000

================================================== =====================其他說明如下:

我還想警告您,依靠javascript計時器並不安全,因為js是單線程的,您希望在超時或間隔過去之后准確調用的代碼可以在以后調用。 盡管間隔為20秒,但我認為這不是問題。

順便說一下,您的代碼中有些混亂。 這條線似乎沒用

total_time += 10;

同樣這個var stLogInterval = 20; 和這個

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

廢話 您需要專門使用變量或window屬性,而不能同時使用,最好是變量

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

根據評論更新

您需要將功能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。我真的不喜歡此功能,這有點不合邏輯,但這是需要的微小更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM