计算用户使用JS/Jquery滚动和移动鼠标的次数

Counting the number of times a user scrolled and moved his mouse using JS / Jquery

本文关键字:移动 鼠标 滚动 Jquery 用户 JS 计算      更新时间:2023-09-26

我正在尝试使用以下jquery代码计算用户滚动页面(任何方向(并移动鼠标的次数:

    $(window).bind('scroll',function(e){
       scrolling++;
    });
    $(window).bind('mousemove',function(e){
       mouse_moved++;
    });

这样做的问题是,一个滚动事件或一个鼠标移动会给变量"滚动"和"mouse_moved"一个非常高的数量,而不仅仅是将其增加一个。

似乎每当洗涤器/鼠标位置发生变化时,它就已经将其计为一个事件,即使原始事件尚未完成。

我怎样才能正确地做到这一点?正确计算一个滚动和鼠标移动事件?

您需要跟踪您的状态,例如检测滚动/移动何时开始,然后在何时结束。你需要决定"结束"是什么意思 ——在你决定它停止移动之前,鼠标必须再次静止多长时间?5毫秒?10?15?

var scrolling = 0;
var scrollTimeout = 0;
$(window).bind('scroll',function(e){
   cancelTimeout(scrollTimeout);
   scrollTimeout = setTimeout(doneScrolling, 10); // 10 = 10ms
});
function doneScrolling() {
    scrollTimeout = 0;
    ++scrolling;
}

。鼠标移动(具有自己的独立计时器(也是如此。