0
请帮帮我。我必须找到用户在页面上完成活动的总时间。我做了jquery代码,这段代码发现如果用户闲置10秒,代码增加其空闲时间。但是这个代码的问题是,当用户在该页面上连续闲置(例如30秒)时,代码必须在空闲时间内总共增加10秒+10秒+10秒总共30秒。它在闲置时间只增加10秒,跳过20秒的休息时间,就像我上面提到的那样。尽管用户在超时后在页面上完成了像mousemove等一些活动,但仍然可以在空闲时间内再次增加10秒,但这次只能再增加10秒,而不是全时间范围。jquery timeout函数在一次调用后没有被再次调用
问题可能会超时。超时功能在一次调用后不会被再次调用。我想不会有连续的超时通话。我不确定。
这里是代码
var timeoutID; \t
var start, end, pagefocustime = 0;
var opentime, midtime = 0;
var exacttime = 0;
var inactivetime = 10000, idletime = 0; \t
var window_focus = true;
$(document).ready(function() {
start = performance.now(); //Calculating Startup Time
midtime = start;
$(window).on('blur', function() {
\t window_focus = false;
end = performance.now();
pagefocustime += end - midtime;
\t exacttime += end - midtime;
})
$(window).on('focus', function() {
\t window_focus = true;
midtime = performance.now();
})
if(window_focus){
\t function setup() {
\t \t this.addEventListener("mousemove", resetTimer, false);
\t \t this.addEventListener("mousedown", resetTimer, false);
\t \t this.addEventListener("keypress", resetTimer, false);
\t \t this.addEventListener("DOMMouseScroll", resetTimer, false);
\t \t this.addEventListener("mousewheel", resetTimer, false);
\t \t this.addEventListener("touchmove", resetTimer, false);
\t \t this.addEventListener("MSPointerMove", resetTimer, false);
\t \t startTimer();
\t }
\t
\t setup();
\t
\t function startTimer() {
\t \t // wait 10 seconds before calling goInactive
\t \t timeoutID = window.setTimeout(goInactive, 10000);
\t }
\t
\t function resetTimer(e) {
\t \t window.clearTimeout(timeoutID);
\t
\t \t goActive();
\t }
\t
\t function goInactive() {
\t \t idletime = idletime + inactivetime;
\t \t console.log("I am called");
\t }
\t
\t function goActive() {
\t \t startTimer();
\t }
} \t
$(window).on('beforeunload',function(){
end = performance.now();
pagefocustime += end - midtime;
console.log("Total page focus Time : " + pagefocustime);
\t opentime = end - start;
\t console.log("Total Page Open time : " + opentime);
\t exacttime = pagefocustime - idletime;
\t console.log("exact time : " + exacttime);
});
});
请帮助。 非常感谢提前
如果你正在使用jQuery,为什么不用'$(this).on(“mousemove mousedown keypress etc”,resetTimer)'而不是对'addEventListener()'进行七次单独调用? – nnnnnn