Javascript 如何将mousemove jQuery事件包装在条件中?

Javascript 如何将mousemove jQuery事件包装在条件中?,javascript,jquery,Javascript,Jquery,我正在探索一些从我的网站过滤机器人流量的不同方法。不幸的是,由于这些更复杂的机器人中有许多可以执行JavaScript,因此我的许多将机器人流量排除在谷歌分析之外的老把戏不再有效 我的一个想法是使用jQuery仅在文档上检测到鼠标移动时触发页面视图,如下所示: var counter = 0; if(counter === 0){ $(document).mousemove(function(event){ alert("Fire an even

我正在探索一些从我的网站过滤机器人流量的不同方法。不幸的是,由于这些更复杂的机器人中有许多可以执行JavaScript,因此我的许多将机器人流量排除在谷歌分析之外的老把戏不再有效

我的一个想法是使用jQuery仅在文档上检测到鼠标移动时触发页面视图,如下所示:

var counter = 0;
if(counter === 0){
          $(document).mousemove(function(event){
               alert("Fire an event to GA here");
               counter += 1;  
          }
     );
}
这确实会在移动鼠标时触发警报,但不幸的是,警报仍然会继续弹出,即使它已经触发过一次。我的另一个担忧是,我想在事件处理程序启动后禁用它,因为mousemove对用户来说可能是资源密集型的


这可能吗?除了mousemove,还有更好的方法吗?

你已经很接近了。您只需将if()放在绑定之外,即可将其反转

也看看jQuery


计数器的使用已中断,但无需在触发后将
mousemove
事件处理程序附加到文档。尝试使用绑定事件,使其仅执行一次:

$(document).one("mousemove", function(event){
    alert("Fire an event to GA here");
});
使用一个()

因此,对于您的代码,这看起来像这样:

$(document).one('mousemove',function(){
alert("Fire an event to GA here");
       counter += 1;  
});

这要求它与
.on()
,no?@SetSailMedia绑定。我测试了它,它与
$(文档)一起工作。mousemove
但是
$(文档)。一个
是更好的解决方案。感谢澄清,我认为
.off()
仅用于
.on()
$(document).on('mousemove', function(){
    alert("GA triggered");
    $(document).off('mousemove');
});
$(document).one('mousemove',function(){
alert("Fire an event to GA here");
       counter += 1;  
});