繁体   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