我有这个(部分)脚本,根据时间设置将事件发送到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但是没有做到这一点。
答案 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 = 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.我真的不喜欢这个函数,它有点不合逻辑,但这些是需要的微小更改。