请帮帮我。我必须找到用户在页面上完成活动的总时间。我已经制作了jquery代码,这段代码发现如果用户闲置10秒钟,代码会增加其空闲时间。但是这个代码的问题是,当用户在该页面上连续闲置(例如30秒)时,Code必须在空闲时间内加上10秒+10秒+10秒总共30秒。它在空闲时间仅增加10秒,跳过20秒的剩余时间,如上所述。当用户在超时后完成一些活动(如mousemove等)时,它可以正常工作,它会再次增加10秒到空闲时间,但这次只增加10秒,而不是全时间范围。
问题可能是超时。一次调用后,不会再次调用超时功能。我认为没有连续的超时呼叫。我不确定。
这是代码
var timeoutID;
var start, end, pagefocustime = 0;
var opentime, midtime = 0;
var exacttime = 0;
var inactivetime = 10000, idletime = 0;
var window_focus = true;
$(document).ready(function() {
start = performance.now(); //Calculating Startup Time
midtime = start;
$(window).on('blur', function() {
window_focus = false;
end = performance.now();
pagefocustime += end - midtime;
exacttime += end - midtime;
})
$(window).on('focus', function() {
window_focus = true;
midtime = performance.now();
})
if(window_focus){
function setup() {
this.addEventListener("mousemove", resetTimer, false);
this.addEventListener("mousedown", resetTimer, false);
this.addEventListener("keypress", resetTimer, false);
this.addEventListener("DOMMouseScroll", resetTimer, false);
this.addEventListener("mousewheel", resetTimer, false);
this.addEventListener("touchmove", resetTimer, false);
this.addEventListener("MSPointerMove", resetTimer, false);
startTimer();
}
setup();
function startTimer() {
// wait 10 seconds before calling goInactive
timeoutID = window.setTimeout(goInactive, 10000);
}
function resetTimer(e) {
window.clearTimeout(timeoutID);
goActive();
}
function goInactive() {
idletime = idletime + inactivetime;
console.log("I am called");
}
function goActive() {
startTimer();
}
}
$(window).on('beforeunload',function(){
end = performance.now();
pagefocustime += end - midtime;
console.log("Total page focus Time : " + pagefocustime);
opentime = end - start;
console.log("Total Page Open time : " + opentime);
exacttime = pagefocustime - idletime;
console.log("exact time : " + exacttime);
});
});

请帮忙。 非常感谢提前
答案 0 :(得分:0)
你可以在'goInactive'方法中调用'startTimer'来重新开始检查。
当您使用该代码时,可以将所有这些事件名称放入数组中,然后使用map函数附加侦听器。