2011-11-28 51 views
3

我需要的东西,其中:有没有任何JavaScript库来捕获鼠标/键盘事件并将它们发送到外部服务器?

  • 可以捕获所有的键盘事件
  • 可以捕获所有鼠标事件(点击,移动)
  • 能赶上滚动页面,可能需要大约浏览器的差异护理
  • 发送数据到外部服务器使用JSONP(或其他任何东西,但不仅需要在最新的浏览器中工作)
  • 是相当小,最多xx kB我希望

我想找到至少有3个以上正确实施的东西。 我也可以看看像Dojo或JQuery这样的js框架,如果他们能帮助我的话,那么我能够保持它足够小吗?

+0

当您使用“** ALL **”这个词是指**和**之外的浏览器之外的键盘和鼠标事件吗? (原因这是不可能的Javascript) –

+1

不,显然不是;)我的意思是浏览器选项卡内的所有事件(如果它是活动的)。 –

+0

只是好奇,为什么你需要这么多的用户? – zzzzBov

回答

9

如何自己写? :)让我们考虑这个简单的jQuery代码:

把这个在您的<头>

<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script> 

    <script type="text/javascript"> 
     $(document).ready(function(){ 
      $('html').mousemove(function(event){ 
       console.log("mouse move X:"+event.pageX+" Y:"+event.pageY); 
      }); 
      $('html').click(function(event){ 
       console.log("mouse click X:"+event.pageX+" Y:"+event.pageY); 
      }); 
      $('html').keyup(function(event){ 
       console.log("keyboard event: key pressed "+event.keyCode); 
      }); 
     }); 
    </script> 

如果你会去到Firefox萤火虫或IE/Chrome开发者工具/ JavaScript控制台,你会看到所有价值。你将需要实现你需要的数据,以及一些机制,以每两秒钟(使用jQuery的岗位或AJAX方法和JSON对象)

汇总后所收集的数据进行简单的活动对象:

  • 所有键盘事件?是(按键)
  • 鼠标移动和点击?是
  • 可以捕捉页面滚动吗?可行
  • 可能关注浏览器的差异 - 这是jquery的主要目标
  • 使用JSONP发送数据到外部服务器?确保只使用$阿贾克斯或$。员额
  • 是相当小的,顶多XX KB我希望 - jQuery的it'self围绕31KB minfied/gzip压缩

这不是防弹的,你需要的服务器部分(简单的php/asp.net mvc页面反序列化json并将其存储到你需要的db/xml whaterver中),并且你准备好了:)

根据下面有关批量处理数据的评论 - 非常好点。改变。鼠标移动事件:

  $('html').mousemove(function(event){ 
       console.log("mouse move X:"+event.pageX+" Y:"+event.pageY); 
       var color = 'red'; 
       var size = '2px'; 
       $("body").append(
        $('<div></div>') 
         .css('position', 'absolute') 
         .css('top', event.pageY + 'px') 
         .css('left', event.pageX + 'px') 
         .css('width', size) 
         .css('height', size) 
         .css('background-color', color) 
       ); 
      }); 

将使它更容易想象将有多少数据是 - 每个点会是一个POST到远程服务器

+1

而不是'console.log',你可以很容易地使用'$ .get'把数据发送到远程服务器。尽管您可能希望对事件进行批处理,以便在有人抓取鼠标时不发送数百个请求。 –

+1

发送聚合数据“onBeforeUnload”可能是有效的,也许每隔30秒发送一次。 –

0

这个问题听起来像一个XY Problem。我认为你真正想要的是一个系统,它可以让你在网页浏览器上记录用户事件并报告这些事件。通常,这种类型的功能不是作为部分产品存在,而是完整的解决方案。我知道的唯一解决方案是这种跟踪AND提供报告的类型是Adobe Omniture(来自个人经验)。在写这篇文章的时候,这个网站似乎很糟糕。

相关问题