creepx v0.4.2
Creepx
Declarative user event tracking system. :squirrel:
TODO
- Add minimum distance to
creepmoveandshakemove - Finish docs
What
Creepx attaches event listeners to the supplied DOM element, then fires your callback with event payload when various events occur.
Put a JSON string into the data-creepx attribute onto DOM elements you want to track and the data will be attached to your events.
Note: events that had
stopPropagationcalled on them will not be registered.
Example
HTML:
<button data-creepx='{"id":"pressbutton"}'>
Press
</button>JS:
import creep from 'creepx';
creep(document, payload => {
// do stuff with payload
});When a user clicks on the button, your callback will receive the following payload:
const payload = {
event: 'click',
data: {
id: 'pressbutton',
},
};You can then send the data to your log server!
Events
You can import the following functions:
import {
creepClicks, // click events
creepMousemove, // mousemove events
creepKeydown, // keydown events
creepClipboard, // clipboard events
creepWheel, // wheel events
creepSelect, // select events
} from "creepx";If you just want to track everything, import default:
import creep from "creepx"; // yoloClick
Located in creepClicks.
clickdoubleclickmulticlick
Mousemove
Located in creepMousemove.
creepmoveshakemove
Keydown
Located in creepKeydown.
keydown
Clipboard
Located in creepClipboard.
cutcopypaste
Wheel
Located in creepWheel.
scroll
Select
Located in creepSelect.
select
Dependencies
rxjs>= 5
API
The package exports a set of functions as well as a default function with two parameters:
target- the DOM element to which should events be attachedcallback- the callback to fire when an event happens
Example
import creep, { creepClicks } from 'creepx';
// track everything happening on document if it has 'data-creepx' on it
creep(document, payload => {
if (payload.data) {
fetch('http://localhost:8081/logstash', {
method: 'POST',
body: JSON.stringify(payload),
});
}
});
// track clicks on this specific button extra
const btn = document.getElementById("trackme")
creepClicks(btn, payload => {
fetch('http://localhost:8081/trackme', {
method: 'POST',
body: JSON.stringify(payload),
});
})License
MIT