更改javascript的输出
我有一个脚本(一部分),它根据时间设置将事件发送到分析。默认情况下,它每10秒发送一次事件,输出为ga(“发送”、“事件”、“时间”、“日志”、“0:10”),10秒后为ga(“发送”、“事件”、“时间”、“日志”、“0:20”) 我搞不清楚的是,当我更改时间设置以每20秒触发一个事件时,如何获得此输出ga(“发送”、“事件”、“时间”、“日志”、“0:20”),以及20秒后的下一个ga(“发送”、“事件”、“时间”、“日志”、“0:40”) 这是我的密码更改javascript的输出,javascript,events,google-analytics,universal-analytics,Javascript,Events,Google Analytics,Universal Analytics,我有一个脚本(一部分),它根据时间设置将事件发送到分析。默认情况下,它每10秒发送一次事件,输出为ga(“发送”、“事件”、“时间”、“日志”、“0:10”),10秒后为ga(“发送”、“事件”、“时间”、“日志”、“0:20”) 我搞不清楚的是,当我更改时间设置以每20秒触发一个事件时,如何获得此输出ga(“发送”、“事件”、“时间”、“日志”、“0:20”),以及20秒后的下一个ga(“发送”、“事件”、“时间”、“日志”、“0:40”) 这是我的密码 var stLogInterval =
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=10000
到window.stLogInterval=20000
=======================================================================
其他注意事项包括:
我还想警告您,依赖javascript计时器是不安全的,因为js是单线程的,您希望在超时或间隔过后调用的代码可以在以后调用得更多。虽然间隔20秒,我认为这不是问题所在
顺便说一下,你的代码有些混乱。这句话似乎没用
total_time += 10;
这也是var stLogInterval=20代码>和这个
if (typeof window.stLogInterval == "undefined") {
window.stLogInterval = 10000
}
这是胡说八道。您需要专门使用variable或window属性,而不是两者,最好是variable
========================
根据评论进行更新
您需要将函数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;
}
函数跟踪日志时间(tosArray){
var minPart;
var sec=+tosArray[0]+20;
如果(秒>=60){
minPart=+tosArray[1]+1;
sec-=60;
}否则{
minPart=tosArray[1]| |“0”;
}
秒=秒<10?'0'+秒:秒;
返回minPart+':'+秒;
}
并且必须设置window.stLogInterval=20000
,而不是10000。我真的不喜欢这个功能,它有点不合逻辑,但这些是所需的小改动。是否希望时间以分钟、小时显示?i、 e.0:20
,0:40
,1:00
等等?现在的情况是几秒钟。所以0:20是20秒,虽然我同意它看起来像几分钟。输出应该是0:20和0:40等等。谢谢,我知道最后一部分是秒,可以接受0:100而不是1:40吗?虽然我认为这是不可接受的,但这是不可能的。我担心这会影响我以前在分析方面的数据。谢谢。代码中的混乱可能对代码的其他部分有用。我只拿出了这个问题所需要的部分。实际上,人们可以自己设置时间变量。如果他们把变量设置为30秒呢?当我手动更改时,我知道上面的操作正常,但是如果有人在插件选项页面上更改了时间变量,那么输出也应该相应地更改。@WendiT那么您可能需要相应地将total_time+=10
更改为+=20。当我说50和10以及40和20是一分钟的秒数时,我理解正确吗?第10步和第20步是要采取的步骤?@WendiT第10步和第20步(我想你问的是总时间+=10;
和总时间+=20;
)我不知道是什么。我可以猜10秒和20秒,这个变量在其他地方使用。对于50和10以及40和20,此逻辑将获取您以前的时间字符串,例如1:40
将其拆分为一个数组并还原,因此您将获得[40:1]
,然后检查您是否有40,它将1添加到分钟值,并将秒值设置为0。所以,是的,你是对的,这些是秒,总时间是另一个函数所需要的。你还可以看看关于这个的第五条评论吗:人们实际上可以自己设置时间变量。如果他们把变量设置为30秒呢?我知道当我手动更改它时,上面的操作是有效的,但是如果有人更改插件选项页面上的时间变量,输出也应该相应地更改。