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