更改javascript的输出

时间:2015-07-04 02:59:06

标签: javascript events google-analytics universal-analytics

我有这个(部分)脚本,根据时间设置将事件发送到Analytics。默认情况下,它每10秒发送一次事件,输出为ga("发送","事件","时间","日志", " 0:10")10秒后它是ga("发送","事件","时间","记录"," 0:20")。

我无法弄清楚当我每20秒更改时间设置以触发事件时如何获得此输出ga("发送","事件" ,"时间","记录"," 0:20")和下一个20秒后ga("发送",&# 34;事件","时间","记录"," 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但是没有做到这一点。

1 个答案:

答案 0 :(得分: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 = 10000window.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.我真的不喜欢这个函数,它有点不合逻辑,但这些是需要的微小更改。