mouseTracer
record mouse move
by mmis1000
HTML
<div></div>
<span id='pos'><span>
<pre><span id='list'>[]</span>
</pre>
CSS
div {
width:200px;
height:200px;
background:red;
}
JavaScript
function mouseEventFactory(handler) {
function keyEvent(event) {
var posX, posY, position, keynum, offset;
if (window.event) {
keynum = event.keyCode;
} else if (event.which) {
keynum = event.which;
} else {
keynum = 0;
}
offset = $(this).offset();
if (offset) {
posX = offset.left;
posY = offset.top;
} else {
posX = 0
posY = 0
}
position = {
'x': event.pageX - posX,
'y': event.pageY - posY
};
handler(keynum, position);
return true;
}
return keyEvent;
}
function MouseTracer(element) {
this.target = element;
var SESSION_COUNTS_LIMIT = 30;
var SESSION_LENGTH_LIMIT = 400;
var self = this;
this.mousePeriod = {};
this.mousePeriodUp = [];
this.mousePeriodDown = [];
this.lastPosition = null;
function objectToArray(obj) {
var arr, name, val;
arr = $.map(obj, function (value, index) {
return [value];
});
console.log(JSON.stringify(arr));
return arr;
}
function limit(list, limit) {
if (list.length > limit - 1) {
list.splice(
0,
list.length - limit + 1);
}
return list;
}
function initMousePeriod(mouseNum, position) {
if (self.mousePeriod[mouseNum] === undefined || !self.mousePeriod[mouseNum].press) {
self.mousePeriod[mouseNum] = {
'down': 0,
'up': 0,
'press': false,
'period': 0,
'mouse': mouseNum,
'path': []
}
return true;
} else {
return false;
}
}
function mouseDown(mouseNum, position) {
if (initMousePeriod(mouseNum, position)) {
self.mousePeriod[mouseNum].press = true;
...