Is there any javascript library to capture mouse/keyboards events and send them to external server?

社会主义新天地 提交于 2020-01-23 01:18:11

问题


What I need is something which:

  • can catch all keyboard events
  • can catch all mouse events (clicks, movement)
  • can catch page scrolling, possibly taking care about browsers differences
  • send data to external server using JSONP (or anything else, but need to work not only in newest browsers)
  • is quite small, at most xx kB I hope

I would like to find something which have at least 3 of above implemented properly. I can also look at js frameworks like Dojo or JQuery if they can help me, but then will I be able to to keep it small enough?


回答1:


How about writing it yourself ? :) Let's consider this simple jquery code :

put this in your < 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>

If you'll go to Firefox firebug, or IE/Chrome developer tools / javascript console you'll see all the values. You will need to implement simple event object with the data you need, and some mechanism to post the gathered data every couple of seconds (using jquery post or ajax method and JSON object )

Summarizing :

  • all keyboard events ? yes (key presses)
  • mouse movement and clicks ? yes
  • can catch page scrolling ? doable
  • possibly taking care about browsers differences - that's jquery main goal
  • send data to external server using JSONP ? sure just use $.ajax or $.post
  • is quite small, at most xx kB I hope - jquery it'self is around 31kb minfied/gzipped

It's not bulletproof, you'll need the server part (simple php/asp.net mvc page to deserialize json and store it into db / xml whaterver you need ) and you're ready to go :)

as per the comment below about batching up the data - very good point. Changeing the .mousemove event to :

            $('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)
                );
            });

will make it easier to imagine how much data it will be - each dot would be a single POST to the remote server




回答2:


This question sounds like a XY Problem. I think what you ACTUALLY looking for is a system that will allow you to log user events on a webbrowser AND report on these events. Typically this type of functionality doesn't exist as a partial product but a complete solution. The only solution I know of that does this type of tracking AND provides reporting is Adobe Omniture (from personal experience). Whats terrible as of this writing the website appears to be down.




回答3:


There is a service http://www.clicktale.com/support/video_tutorials



来源:https://stackoverflow.com/questions/8300730/is-there-any-javascript-library-to-capture-mouse-keyboards-events-and-send-them

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!