是否有任何javascript库来捕获鼠标/键盘事件并将它们发送到外部服务器?

Pio*_*lka 4 javascript ajax jquery dojo jsonp

我需要的是:

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

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

tor*_*orm 9

怎么样自己写呢?:)让我们考虑一下这个简单的jquery代码:

把它放在你的<head>中

    <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>
Run Code Online (Sandbox Code Playgroud)

如果您要访问Firefox firebug或IE/Chrome开发人员工具/ javascript控制台,您将看到所有值.您需要使用所需的数据实现简单的事件对象,以及每隔几秒发布收集的数据的一些机制(使用jquery post或ajax方法和JSON对象)

总结:

  • 所有键盘事件?是(按键)
  • 鼠标移动和点击?是
  • 可以抓住页面滚动?可行
  • 可能会关注浏览器差异 - 这是jquery的主要目标
  • 使用JSONP将数据发送到外部服务器?确保只使用$ .ajax或$ .post
  • 是非常小的,最多xx kB我希望 - jquery它自己约31kb minfied/gzipped

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

根据下面关于批量数据的评论 - 非常好的一点.将.mousemove事件更改为:

            $('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)
                );
            });
Run Code Online (Sandbox Code Playgroud)

将更容易想象它将有多少数据 - 每个点都是对远程服务器的单个POST